Maison  >  Article  >  développement back-end  >  Traitement d'image PHP : exemple de mise à l'échelle d'image à l'aide de la fonction imagecopyresampled

Traitement d'image PHP : exemple de mise à l'échelle d'image à l'aide de la fonction imagecopyresampled

高洛峰
高洛峰original
2016-12-26 12:57:071353parcourir

L'optimisation du site Web ne peut pas se concentrer uniquement sur le code. Le contenu est également l'un des objets les plus importants du site Web, et les images sont le contenu le plus important du site Web. La chose la plus importante à prendre en compte lors de l'optimisation des images est de redimensionner automatiquement toutes les grandes images téléchargées sur le site Web en petites images (la taille est suffisante pour la page Web), afin de réduire l'espace de stockage de N fois et d'augmenter la vitesse de traitement. téléchargement et navigation. Par conséquent, la tâche de mise à l'échelle des images dans un site Web dynamique doit être traitée. Elle est souvent liée au téléchargement de fichiers et peut être redimensionnée lors du téléchargement des images. Bien sûr, il est parfois nécessaire de gérer la mise à l'échelle de l'image séparément. Par exemple, lors de la création d'une liste d'images, si vous utilisez directement une grande image et que vous ne zoomez que sur une petite image lorsqu'elle est affichée, cela ne ralentira pas seulement le téléchargement. vitesse, mais également réduire le temps de réponse de la page. Habituellement, lorsque vous rencontrez une telle application, lors du téléchargement d'une image, une petite icône spécialement utilisée pour créer une liste est mise à l'échelle pour l'image. Lorsque vous cliquez sur cette petite icône, la grande image sera téléchargée pour la navigation.

Utilisez la bibliothèque GD pour traiter la mise à l'échelle de l'image, généralement en utilisant l'une des deux fonctions imagecopyresized() et imagecopyresampled(). La qualité sera meilleure après avoir utilisé la fonction imagecopyresampled(). Ici, nous présentons uniquement comment utiliser la fonction imagecopyresampled(). Le prototype de cette fonction ressemble à ceci :

  bool imagecopyresampled(resource dst_image,resource src_image,int dst_x,int dst_y,int src_x,int src_y,int dst_w,int dst_h ,int src_w,int src_h)

Cette fonction copie une zone carrée d'une image à une autre, en interpolant en douceur les valeurs des pixels, réduisant ainsi la taille de l'image tout en conservant une définition extrêmement haute. Renvoie VRAI en cas de succès, FAUX en cas d'échec. Les paramètres dst_image et src_image sont respectivement les identifiants de l'image cible et de l'image source. Si la source et la cible ont des largeurs et des hauteurs différentes, l'image sera réduite et étirée en conséquence, les coordonnées faisant référence au coin supérieur gauche. Cette fonction peut être utilisée pour copier au sein de la même image (si dst_image et src_image sont identiques) mais si les zones se chevauchent, les résultats sont imprévisibles. Dans l'exemple suivant, en prenant le format d'image JPEG comme exemple, écrivez une fonction de mise à l'échelle d'image thumb() Le code est le suivant :

<?php
    //用于对图片进行缩放
    function thumb($filename,$width=200,$height=200){
        //获取原图像$filename的宽度$width_orig和高度$height_orig
        list($width_orig,$height_orig) = getimagesize($filename);
        //根据参数$width和$height值,换算出等比例缩放的高度和宽度
        if ($width && ($width_orig<$height_orig)){
            $width = ($height/$height_orig)*$width_orig;
        }else{
            $height = ($width / $width_orig)*$height_orig;
        }
 
        //将原图缩放到这个新创建的图片资源中
        $image_p = imagecreatetruecolor($width, $height);
        //获取原图的图像资源
        $image = imagecreatefromjpeg($filename);
 
        //使用imagecopyresampled()函数进行缩放设置
        imagecopyresampled($image_p,$image,0,0,0,0,$width,$height,$width_orig,$height_orig);
 
        //将缩放后的图片$image_p保存,100(质量最佳,文件最大)
        imagejpeg($image_p,$filename);
 
        imagedestroy($image_p);
        imagedestroy($image);
    }
 
    thumb("brophp.jpg",100,100);
?>

Plus d'exemples de traitement d'image PHP utilisant la fonction imagecopyresampled pour implémenter. mise à l'échelle de l'image Pour les articles connexes, veuillez faire attention au site Web PHP 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