Posté le 12/10/2015 - par Amy Wiggenhauser - dans Non classés
Les sites internet qui proposent de télécharger des images (comme des images de profil sur un forum ou un blog par exemple) ont souvent besoin de les redimensionner pour optimiser l'espace qu'elles occupent et diminuer leur temps de chargement.
Les images en PNG ont une particularité : elles possèdent de la transparence. Pour que celle-ci soit préservée après le redimentionnement, il est nécessaire d'utiliser une méthode adaptée.
En effet, dans le cas contraire, la transparence risque d'être remplacée par une autre couleur comme du noir, ce qui peut s'avérer désastreux pour le rendu de l'image.
Dans les lignes qui suivent, on suppose que l'image à redimensionner est téléchargée depuis un formulaire PHP (form), et qu'on souhaite la redimensionner à une taille de 100px de hauteur en gardant les mêmes proportions.
//récupérer l'image à redimensionner depuis un formulaire PHP (ou autre méthode de votre choix)
$image = $_FILES['file']['tmp_name'][0];
//créer une copie de travail de l'image de base
$mon_image = imagecreatefrompng($image);
//préserver la transparence
imagesavealpha($mon_image, true);
//redimensionner l'image à 100px de hauteur
$image_sizes = getimagesize($image);
$ratio = round($image_sizes[0] * 100 / $image_sizes[1]);
//créer une image temporaire de taille réduire
$mon_image2 = imagecreatetruecolor($ratio, 100);
//préserver la transparence de l'image réduite
imagesavealpha($mon_image2, true);
$trans_colour = imagecolorallocatealpha($mon_image2, 0, 0, 0, 127);
imagefill($mon_image2, 0, 0, $trans_colour);
//redimensionner l'image
imagecopyresized($mon_image2, $mon_image, 0, 0, 0, 0, $ratio, 100, $image_sizes[0], $image_sizes[1]);
//préserver la transparence
imagesavealpha($mon_image2, true);
//enregistrer l'image réduite
imagepng($mon_image2, "repertoire/nom-de-l-image.png", 0);
//détruire les images temporaires
imagedestroy($mon_image);
imagedestroy($mon_image2);
Et voila !
Commentaires
Aucun commentaire pour le moment.
Laisser un commentaire