Bonjour, j'ai créé cette fonction qui permet de redimentionner une image jpg, gif, ou png, elle utilise la librairie GD de php.
liste des arguments :
$source_url est l'image source, ex : images/1.jpg
$destination_url est l'image destination, ex : images/1_mini.jpg
$taille est la taille de la miniature, appliquée soit a la largeur soit à la heuteur (voir code ci-dessous)
$type est le type de l'image, par défaut jpg, il peut être gif, GIF, png, PNG, jpg, jpeg, JPEG
$save définie si l'on veux quand même enregistrer l'image même si la miniature n'a pas été créée
TRUE si on veux quand même enregistrer
FALSE si on ne veux pas
Source / Exemple :
function mini_image($source_url, $destination_url, $taille, $type='jpeg', $save=1) {
/*
$source_url est l'image source, ex : images/1.jpg
$destination_url est l'image destination, ex : images/1_mini.jpg
$taille est la taille de la miniature, appliquée soit a la largeur soit à la heuteur (voir code ci-dessous)
$type est le type de l'image, par défaut jpg, il peut être gif, GIF, png, PNG, jpg, jpeg, JPEG
$save définie si l'on veux quand même enregistrer l'image même si la miniature n'a pas été créée
TRUE si on veux quand même enregistrer
FALSE si on ne veux pas
créé par o-thib-o */
if (preg_match('#jpe?g#i', $type)) {
$source = imagecreatefromjpeg($source_url); // si l'image est un jpg
$ext = 1;}
elseif (preg_match('#png#i', $type)) {
$source = imagecreatefrompng($source_url); // si l'image est un png
$ext = 2;}
elseif (preg_match('#gif#i', $type)) {
$source = imagecreatefromgif($source_url); // si l'image est un gif
$ext = 3;}
$largeur_source = imagesx($source); // on détermine les dimentions de l'image source
$hauteur_source = imagesy($source);
// On n'effectue la redimention seulement si la miniature que l'on veux faire est plus petite que la source
if ($taille < $largeur_sourc OR $taille < $hauteur_source) {
/* On regarde la plus grande des deux simentions de l'image
- Si la largeur est plus grande que la hauteur on calculera la miniature à partir ce celle-ci
- et inversement pour éviter que des image par example qui font 10x600 soient mal redimentionnées */
if ($largeur_source > $hauteur_source) {
$largeur_destination = $taille;
$hauteur_destination = $largeur_destination * $hauteur_source / $largeur_source; }
else {
$hauteur_destination = $taille;
$largeur_destination = $hauteur_destination * $largeur_source / $hauteur_source; }
$destination = imagecreatetruecolor($largeur_destination, $hauteur_destination); // On crée la miniature vide
// On crée la miniature
imagecopyresampled($destination, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur_source, $hauteur_source);
//on enregistre la miniature que l'on viens de créé
switch ($ext) {
case 1 :
imagejpeg($destination, $destination_url);
break;
case 2 :
imagepng($destination, $destination_url); // malheuresement je n'ai pas trouver le moyen de redimentionner les png 24bits en gardant la transparence
break;
case 3 :
imagegif($destination, $destination_url);
break; }
return 1; // l'image a été enregistrée on retourne TRUE
}
// si on a pas créé la miniature car elle étais plus grande que la source
else {
if ($save) {
copy($source_url,$destination_url); // on copie quand même l'image
return 1; // l'image a été enregistrée on retourne TRUE
}
else {
return 0; // rien n'a été faits, on retourne FALSE
}
}
}
Conclusion :
Voila j'espers que cette source vous aura été utile, si vouzs avez des remarques a faire n'hésitez pas je suis ouvert à toute critique =)
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.