image zoom non déformée php :
function resizeImage($im,$maxwidth,$maxheight,$name,$filetype) { $pic_width = imagesx($im); $pic_height = imagesy($im); if(($maxwidth && $pic_width > $maxwidth) || ($maxheight && $pic_height > $maxheight)) { if($maxwidth && $pic_width>$maxwidth) { $widthratio = $maxwidth/$pic_width; $resizewidth_tag = true; } if($maxheight && $pic_height>$maxheight) { $heightratio = $maxheight/$pic_height; $resizeheight_tag = true; } if($resizewidth_tag && $resizeheight_tag) { if($widthratio<$heightratio) $ratio = $widthratio; else $ratio = $heightratio; } if($resizewidth_tag && !$resizeheight_tag) $ratio = $widthratio; if($resizeheight_tag && !$resizewidth_tag) $ratio = $heightratio; $newwidth = $pic_width * $ratio; $newheight = $pic_height * $ratio; if(function_exists("imagecopyresampled")) { $newim = imagecreatetruecolor($newwidth,$newheight); imagecopyresampled($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height); } else { $newim = imagecreate($newwidth,$newheight); imagecopyresized($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height); } $name = $name.$filetype; imagejpeg($newim,$name); imagedestroy($newim); } else { $name = $name.$filetype; imagejpeg($im,$name); } }
Description du paramètre :
objet image $im, avant d'appliquer la fonction, vous devez le lire with imagecreatefromjpeg() Récupère l'objet image. Si l'environnement PHP supporte PNG et GIF, vous pouvez également utiliser imagecreatefromgif(), imagecreatefrompng();
$maxwidth définit la largeur maximale de l'image générée (unité : pixel); )
$maxheight Hauteur maximale de l'image générée (unité : pixel)
$name Nom de l'image générée
$filetype Type final de l'image générée (.jpg/.png/ .gif)
Commentaires de code :
Lignes 3~4 : Lisez la largeur et la hauteur réelles de l'image qui doit être mise à l'échelle
Lignes 8~26 : Calculez la largeur et hauteur réelles de l'image ainsi que la largeur et la hauteur de l'image à générer. Le taux de compression détermine en fin de compte si la mise à l'échelle de l'image est basée sur la largeur ou la hauteur. Le programme actuel met à l'échelle l'image en fonction de la largeur. Si vous souhaitez redimensionner l'image en fonction de la hauteur, vous pouvez modifier l'instruction de la ligne 22 en $widthratio>$heightratio
Lignes 28 à 31 : Si la longueur ou la largeur de l'image réelle est plus petite que celle spécifiée longueur ou la longueur de l'image générée Largeur, alors soit l'image sera mise à l'échelle en fonction de la longueur, soit l'image sera mise à l'échelle en fonction de la largeur.
Lignes 33~34 : calculez la longueur et la largeur de l'image zoomée finale.
Lignes 36~45 : Modifiez la taille de l'image en fonction de la longueur et de la largeur calculées de l'image finale générée. Il existe deux manières de modifier la taille de l'image : La fonction ImageCopyResized() est valable dans toutes les versions de GD, mais il met l'image à l'échelle. L'algorithme est relativement approximatif. ImageCopyResamples(), les bords de l'image obtenus par son algorithme d'interpolation de pixels sont relativement lisses, mais la vitesse de cette fonction est plus lente que ImageCopyResized().
Ligne 47~49 : L'image traitée est enfin générée. Si vous devez générer un GIF ou un PNG, vous devez changer la fonction imagejpeg() en imagegif() ou imagepng()
Lignes 51 à 56 : Si la longueur et la largeur de l'image réelle sont inférieures à la longueur et à la largeur spécifiées de l'image générée, conservez l'image telle quelle. De même, si vous devez générer un GIF ou un PNG, vous devez modifier le format. fonction imagejpeg() vers imagegif() ou imagepng().
Remarque spéciale :
La version 1.6.2 de la bibliothèque GD prenait auparavant en charge le format GIF, mais comme le format GIF utilise l'algorithme LZW et implique des droits de brevet, le format GIF n'est plus pris en charge après la version GD. 1.6.2. Si vous êtes dans un environnement WINDOWS, il vous suffit de saisir le fichier PHP.INI pour rechercher extension=php_gd2.dll, de supprimer le # et de redémarrer APACHE. Si vous êtes dans un environnement Linux et souhaitez prendre en charge GIF, PNG et JPEG, vous devez télécharger les polices libpng, zlib et freetype et les installer.
Recommandé : serveur 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!