Création de miniatures d'images

Soyez le premier à donner votre avis sur cette source.

Snippet vu 9 076 fois - Téléchargée 34 fois

Contenu du snippet

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 / Exemple :


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);
		
	}

A voir également

Ajouter un commentaire Commentaires
triomen Messages postés 2 Date d'inscription lundi 16 août 2004 Statut Membre Dernière intervention 30 août 2004
30 août 2004 à 12:24
Alors, je suis un peu débutant et j'aimerai savoir qu'est ce que le librairie GD, même si j'ai une petite idée,mais surtout, comme l'installer !! Est ce mon hébergeur qui fait ça (free) ?
Merci d'avance
flashfun Messages postés 296 Date d'inscription mercredi 10 septembre 2003 Statut Membre Dernière intervention 11 septembre 2004
26 août 2004 à 16:19
Voici ton script amélioré par moi-même :

http://www.phpcs.com/code.aspx?ID=25718

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.