Trouver une ressource (Nouvelle version du moteur, plus rapide & pertinent, essayez le !)
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
CRÉATION DE MINIATURES D'IMAGES
Information sur la source
Description
Cette fonction permet de créer une miniature (image non écrasée) de quelques kilo octets pour vos photos. Cette fonction peut être appelée par exemple, juste après l'upload d'une image Elle reçoit en paramètres l'image, la hauteur & la largeur de la miniature désirée et la qualité de la miniature (de 0 à 100) Utilise la librairie GD (version 1.6 et supérieure)
Source
- function generer_miniature($image, $largeur, $hauteur, $qualite) {
-
- // chemin de la miniature à générer
- $dest = "../images/miniatures/mini_$image";
-
- // dossier où se trouve l'image source
- $dossier = "../images/";
-
- $img_in = ImageCreateFromJpeg($dossier.$image);
-
- $size = getimagesize($dossier.$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, mais en gardant la hauteur proportionnelle
- $img_out = ImageCreate($new_larg, $new_haut);
- ImageCopyResized($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 = ImageCreate($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 = ImageCreate($l, $h);
- ImageCopyResized($img_out, $img_in, 0, 0, 0, 0, ImagesX($img_out), ImagesY($img_out), $l, $h);
-
- $im = ImageCreate($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 = ImageCreate($l, $h);
- ImageCopyResized($img_out, $img_in, 0, 0, 0, 0, ImagesX($img_out), ImagesY($img_out), $l, $h);
-
- $im = ImageCreate($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);
-
- }
function generer_miniature($image, $largeur, $hauteur, $qualite) {
// chemin de la miniature à générer
$dest = "../images/miniatures/mini_$image";
// dossier où se trouve l'image source
$dossier = "../images/";
$img_in = ImageCreateFromJpeg($dossier.$image);
$size = getimagesize($dossier.$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, mais en gardant la hauteur proportionnelle
$img_out = ImageCreate($new_larg, $new_haut);
ImageCopyResized($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 = ImageCreate($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 = ImageCreate($l, $h);
ImageCopyResized($img_out, $img_in, 0, 0, 0, 0, ImagesX($img_out), ImagesY($img_out), $l, $h);
$im = ImageCreate($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 = ImageCreate($l, $h);
ImageCopyResized($img_out, $img_in, 0, 0, 0, 0, ImagesX($img_out), ImagesY($img_out), $l, $h);
$im = ImageCreate($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);
}
Sources de la même categorie
Commentaires
|
|