Maison  >  Article  >  développement back-end  >  Comment générer des vignettes en php sans distorsion

Comment générer des vignettes en php sans distorsion

藏色散人
藏色散人original
2022-01-28 10:21:372314parcourir

Comment générer des vignettes en PHP sans distorsion : 1. Créez un exemple de fichier PHP 2. Utilisez la méthode "function reSizeImg($imgSrc, $resize_width...) {...}" pour générer des vignettes d'images dans des proportions égales. .

Comment générer des vignettes en php sans distorsion

L'environnement d'exploitation de cet article : Système Windows 7, PHP version 7.1, ordinateur DELL G3

php Comment générer des vignettes sans distorsion ?

Code pour utiliser la fonction php pour générer des vignettes d'images dans des proportions égales sans distorsion

//等比例生成图片缩略图不失真

/**
    * 生成缩略图
    * $imgSrc           图片源路径
    * $resize_width     图片宽度
    * $resize_height    图片高度
    * $dstimg           缩略图路径
    * $isCut            是否剪切图片
    */
     function reSizeImg($imgSrc, $resize_width, $resize_height, $dstimg, $isCut = false) {
        //图片的类型
        $type = substr(strrchr($imgSrc, "."), 1);
        //初始化图象
        if ($type == "jpg" || $type == "jpeg") {
            $im = imagecreatefromjpeg($imgSrc);
        }
        if ($type == "gif") {
            $im = imagecreatefromgif($imgSrc);
        }
        if ($type == "png") {
            $im = imagecreatefrompng($imgSrc);
        }

        $width = imagesx($im);
        $height = imagesy($im);

        //生成图象
        //改变后的图象的比例
        $resize_ratio = ($resize_width) / ($resize_height);
        //实际图象的比例
        $ratio = ($width) / ($height);
        if (($isCut) == 1) {
            if ($ratio >= $resize_ratio) {
                //高度优先
                $newimg = imagecreatetruecolor($resize_width, $resize_height);
                imagecopyresampled($newimg, $im, 0, 0, 0, 0, $resize_width, $resize_height, (($height) * $resize_ratio), $height);
                ImageJpeg($newimg, $dstimg);
            }
            if ($ratio < $resize_ratio) {
                //宽度优先
                $newimg = imagecreatetruecolor($resize_width, $resize_height);
                imagecopyresampled($newimg, $im, 0, 0, 0, 0, $resize_width, $resize_height, $width, (($width) / $resize_ratio));
                ImageJpeg($newimg, $dstimg);
            }
        } else {
            if ($ratio >= $resize_ratio) {
                $newimg = imagecreatetruecolor($resize_width, ($resize_width) / $ratio);
                imagecopyresampled($newimg, $im, 0, 0, 0, 0, $resize_width, ($resize_width) / $ratio, $width, $height);
                ImageJpeg($newimg, $dstimg);
            }
            if ($ratio < $resize_ratio) {
                $newimg = imagecreatetruecolor(($resize_height) * $ratio, $resize_height);
                imagecopyresampled($newimg, $im, 0, 0, 0, 0, ($resize_height) * $ratio, $resize_height, $width, $height);
                ImageJpeg($newimg, $dstimg);
            }
        }
        ImageDestroy($im);
    }

$result = reSizeImg(&#39;images/15M.jpg&#39;, 1280, 1280,&#39;thumb/xiao15.jpg&#39;);

Apprentissage recommandé : "Tutoriel vidéo PHP"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn