Voici ci dessous le code d’une fonction PHP permettant de redimensionner une image sans la déformer, les paramètres de la fonction sont les suivant :
$source : L’image à redimensionner
$type_value : Le type correspondant à la valeur fixe définie par le paramètre suivant (W : largeur / H : hauteur)
$new_value : La valeur qui sera fixe (liée à l’argument suivant)
$compression : Le degré de compression (de 0 à 100) $sortie : Si nous souhaitons enregistrer l’image, le chemin du fichier
Fonction de retaillage d’une image
<?php function RedimensionnerImage($source, $type_value = "W", $new_value, $compression = 70, $sortie = "") { /* Récupération des dimensions de l'image afin de vérifier que ce fichier correspond bel et bien à un fichier image. Stockage dans deux variables le cas échéant. */ if( !( list($source_largeur, $source_hauteur) = @getimagesize($source) ) ) { return false; } /* Calcul de la valeur dynamique en fonction des dimensions actuelles de l'image et de la dimension fixe que nous avons précisée en argument. */ if( $type_value == "H" ) { $nouv_hauteur = $new_value; $nouv_largeur = ($new_value / $source_hauteur) * $source_largeur; } else { $nouv_largeur = $new_value; $nouv_hauteur = ($new_value / $source_largeur) * $source_hauteur; } /* Création du conteneur, c'est-à-dire l'image qui va contenir la version redimensionnée. Elle aura donc les nouvelles dimensions. */ $image = imagecreatetruecolor($nouv_largeur, $nouv_hauteur); /* Importation de l'image source. Stockage dans une variable pour pouvoir effectuer certaines actions. */ $source_image = imagecreatefromstring(file_get_contents($source)); /* Copie de l'image dans le nouveau conteneur en la rééchantillonant. Ceci permet de ne pas perdre de qualité. */ imagecopyresampled($image, $source_image, 0, 0, 0, 0, $nouv_largeur, $nouv_hauteur, $source_largeur, $source_hauteur); /* Si nous avons spécifié une sortie et qu'il s'agit d'un chemin valide (accessible par le script) */ if(strlen($sortie) > 0 and @touch($sortie)) { /* Enregistrement de l'image et affichage d'une notification à l'utilisateur. */ imagejpeg($image, $sortie, $compression); echo "Fichier sauvegardé."; /* Sinon... */ } else { /* ...Nous indiquons au navigateur que nous affichons une image en définissant le header et nous affichons l'image. */ header("Content-Type: image/jpeg"); imagejpeg($image, NULL, $compression); } /* Libération de la mémoire allouée aux deux images (sources et nouvelle). */ imagedestroy($image); imagedestroy($source_image); } ?>
Laisser un commentaire
Participez-vous à la discussion?N'hésitez pas à contribuer!