Tutoriaux > PHP / MySQL > Redimensionner une image en PHP
Une fonction pour redimensionner une image en PHP, en remplaçant directement sur le serveur l'image en question. Pratique pour redimensionner en masse images JPG, PNG ou GIF.
Le tutoriel suivant est simplement basé sur une fonction très simple de redimension d'images en PHP. Le script gère les images de type JPG, PNG et GIF, sans pour autant gérer la transparence des deux derniers cas (il faut Imagemagic pour gérer la transparence).
La fonction est la suivante :
//SCRIPT D'UPLOAD D'IMAGE
function redimensionner_image($fichier, $nouvelle_taille) {
//VARIABLE D'ERREUR
global $error;
//TAILLE EN PIXELS DE L'IMAGE REDIMENSIONNEE
$longueur = $nouvelle_taille;
$largeur = $nouvelle_taille;
//TAILLE DE L'IMAGE ACTUELLE
$taille = getimagesize($fichier);
//SI LE FICHIER EXISTE
if ($taille) {
//SI JPG
if ($taille['mime']=='image/jpeg' ) {
//OUVERTURE DE L'IMAGE ORIGINALE
$img_big = imagecreatefromjpeg($fichier);
$img_new = imagecreate($longueur, $largeur);
//CREATION DE LA MINIATURE
$img_petite = imagecreatetruecolor($longueur, $largeur) or $img_petite = imagecreate($longueur, $largeur);
//COPIE DE L'IMAGE REDIMENSIONNEE
imagecopyresized($img_petite,$img_big,0,0,0,0,$longueur,$largeur,$taille[0],$taille[1]);
imagejpeg($img_petite,$fichier);
}
//SI PNG
else if ($taille['mime']=='image/png' ) {
//OUVERTURE DE L'IMAGE ORIGINALE
$img_big = imagecreatefrompng($fichier); // On ouvre l'image d'origine
$img_new = imagecreate($longueur, $largeur);
//CREATION DE LA MINIATURE
$img_petite = imagecreatetruecolor($longueur, $largeur) OR $img_petite = imagecreate($longueur, $largeur);
//COPIE DE L'IMAGE REDIMENSIONNEE
imagecopyresized($img_petite,$img_big,0,0,0,0,$longueur,$largeur,$taille[0],$taille[1]);
imagepng($img_petite,$fichier);
}
// GIF
else if ($taille['mime']=='image/gif' ) {
//OUVERTURE DE L'IMAGE ORIGINALE
$img_big = imagecreatefromgif($fichier);
$img_new = imagecreate($longueur, $largeur);
//CREATION DE LA MINIATURE
$img_petite = imagecreatetruecolor($longueur, $largeur) or $img_petite = imagecreate($longueur, $largeur);
//COPIE DE L'IMAGE REDIMENSIONNEE
imagecopyresized($img_petite,$img_big,0,0,0,0,$longueur,$largeur,$taille[0],$taille[1]);
imagegif($img_petite,$fichier);
}
}
}
La fonction ci-dessus est très simple à utiliser. Avant utilisation,il faut par contre que l'image à redimensionner soit déjà sur le serveur !
Ensuite, pour l'utiliser, il faut simplement appeler la fonction avec en arguments : le chemin vers le fichier (absolu ou relatif), et la nouvelle taille maximale en pixels (ici on n'en met qu'une qui fera largeur et hauteur, mais vous pouvez bien entendu séparer !)
Exemple, avec "fonction_redimension.php" contenant simplement la fonction, et étant dans le même dossier que la page "redimension.php", et que l'image "original.jpg" :
<?php
// PAGE REDIMENSION.PHP
include(fonction_redimension.php);
echo 'Redimension en cours...';
redimensionner_image('original.jpg', 400);
echo 'Redimension effectuée';
?>
Avec ce code, l'image original.jpg sera redimensionnée directement dans le dossier, à 400px de large ou de hauteur maximum et en conservant les proportions. Cela fonctionne aussi avec des chemins absolus, à vous de savoir ce qui est préférable d'utiliser dans votre cas !
Par Pouzy
, Le 28 Septembre 2010 à 19h29
Ce tutoriel est la propriété d'Aidoweb et ne peut en aucun cas être copié.
voilà, très bon article
Hey très bon tuto, merci Pouzy
Comment récupérer le chemin de l'image ?
Apres avoir passé plus de 3h en cherchant sur le web une maniere de faire ça, voila que ce script marche !
Je précise que c'est le premier qui marche !
Merci a vous !
merci,,, un cours utile, je le testerai plus tard..
Tutoriaux > PHP / MySQL > Redimensionner une image en PHP