1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
/*--------------------------------------------------------------------------------*/
/*-----fonction qui récupère une image en paramètre, change
les dimensions et l'enregistre dans le fichier images_photo-----------------------*/
//$image est le nom de l'image uploadée
function generer_miniature($image, $largeur, $hauteur, $qualite) {
// chemin de la miniature à générer
$dest = "fichier_photos_retaillees/$image";
// dossier où se trouve l'image source
$dossier = "fichier_photos_originales/";
$img_in = ImageCreateFromJpeg($dossier.'orig'.$image);
$size = getimagesize($dossier.'orig'.$image);
$l = $size[0];
$h = $size[1];
if (($l >= $largeur) && ($h>= $hauteur)) {
$new_haut = ($h * $largeur) / $l;
if($new_haut < $hauteur) {
$new_haut = $hauteur;
$new_larg = ($l * $hauteur) / $h;
} else {
$new_larg = $largeur;
}
// on réduit l'image à la largeur voulue
$img_out = imagecreatetruecolor($new_larg, $new_haut);
ImageCopyResampled($img_out, $img_in, 0, 0, 0, 0, ImagesX($img_out), ImagesY($img_out), $l, $h);
// création d'une image vide aux dimensions de la miniature
$im = imagecreatetruecolor($largeur, $hauteur);
// on copie la zone de l'image de hauteur voulue dans l'image vide
ImageCopy($im, $img_out, 0, 0, 0, 0, $largeur, $hauteur);
ImageJpeg($im, $dest, $qualite);
// destruction des images en mémoire
ImageDestroy($img_out);
ImageDestroy($im);
} elseif (($l < $largeur) && ($h >= $hauteur)) {
$img_out = imagecreatetruecolor($l, $h);
ImageCopyResampled($img_out, $img_in, 0, 0, 0, 0, ImagesX($img_out), ImagesY($img_out), $l, $h);
$im = imagecreatetruecolor($l, $hauteur);
ImageCopy($im, $img_out, 0, 0, 0, 0, $l, $hauteur);
ImageJpeg($im, $dest, $qualite);
// destruction des images en mémoire
ImageDestroy($img_out);
ImageDestroy($im);
} elseif ($l >= $largeur && $h < $hauteur) {
$img_out = imagecreatetruecolor($l, $h);
ImageCopyResampled($img_out, $img_in, 0, 0, 0, 0, ImagesX($img_out), ImagesY($img_out), $l, $h);
$im = imagecreatetruecolor($largeur , $h);
ImageCopy($im, $img_out, 0, 0, 0, 0, $largeur, $hauteur);
ImageJpeg($im, $dest, $qualite);
// destruction des images en mémoire
ImageDestroy($img_out);
ImageDestroy($im);
} elseif ($l < $largeur && $h< $hauteur) {
ImageJpeg($img_in, $dest, $qualite);
}
// destruction de l'image en mémoire
ImageDestroy($img_in);
} |
Partager