Table des matières
Niveau
..........
En rapport...

Créer une miniature

Pour créer une miniature, déjà, il fait que votre Php dispose de GDlib (vous pouvez le vérifier grâce a ce code :

php
<?php phpinfo(); ?>

Ensuite, il faut utilisé GDlib, et la ça se complique. En effet, il existe plusieurs fonctions pour créer des miniatures. La différence est non seulement dans la qualité de la miniatures mais aussi dans la version de GDlib. Pour simplifier tous ça, ci-dessous, vous trouverez un ensemble de fonction qui permet de créer rapidement un miniature de la meilleure qualité possible.

Code

php
<?php
class thumbnails {
	function ResizeImage($image, $newimage, $newwidth=0, $newheight=0) {
		if (!function_exists('ImageTypes'))
			return false;
		list($width,$height,$type) = GetImageSize($image);
		if ($im = self::ReadImageFromFile($image, $type)) {
			if ($newwidth==0)
				$newwidth = ($newheight / $height) * $width;
			else if ($newheight==0)
				$newheight = ($newwidth / $width) * $height;
			elseif ($newheight && ($width < $height))
				$newwidth = ($newheight / $height) * $width;
			else
				$newheight = ($newwidth / $width) * $height;
 
			if (function_exists('ImageCreateTrueColor'))
				$im2 = ImageCreateTrueColor($newwidth,$newheight);
			else
				$im2 = ImageCreate($newwidth,$newheight);
 
			if (function_exists('imagealphablending'))
				imagealphablending($im2, false);
			if (function_exists('imagesavealpha'))
				imagesavealpha ($im2 , true);
 
			if (function_exists('ImageCopyResampled'))
				ImageCopyResampled($im2,$im,0,0,0,0,$newwidth,$newheight,$width,$height);
			else
				ImageCopyResized($im2,$im,0,0,0,0,$newwidth,$newheight,$width,$height);
 
			if (self::WriteImageToFile($im2, $newimage, $type))
				return true;
		}
		return false;
	}
	private function ReadImageFromFile($filename, $type) {
		$imagetypes = ImageTypes();
		switch ($type) {
			case 1 :
				if ($imagetypes & IMG_GIF)
					return $im = ImageCreateFromGIF($filename);
				break;
			case 2 :
				if ($imagetypes & IMG_JPEG)
					return ImageCreateFromJPEG($filename);
				break;
			case 3 :
				if ($imagetypes & IMG_PNG)
					return ImageCreateFromPNG($filename);
				break;
			default:
				return 0;
		}
	}
	private function WriteImageToFile($im, $filename, $type) {
		switch ($type) {
			case 1 :
				return ImageGIF($im, $filename);
			case 2 :
				return ImageJpeg($im, $filename, 85);
			case 3 :
				return ImagePNG($im, $filename);
			default:
				return false;
		}
	}
 
}
?>

utilisation

C'est simple. Vous appelez la fonction thumbnails::ResizeImage avec ses paramètres :
thumbnails::ResizeImage($image, $newimage, $newwidth, $newheight)

  • $image = Image d'origine,
  • $newimage = Nom de la nouvelle image,
  • $newwidth = Nouvelle largeur,
  • $newheight = Nouvelle hauteur.

Et voila, si thumbnails::ResizeImage retourne “true” tous c'est bien passé et $newimage à été créée.

Si vous spécifiez null dans le 2eme paramètre, l'image sera envoyé au navigateur dans le but d'être affichée. Aucun fichier de miniature ne sera créer.
Exemple :
thumbnails::ResizeImage(“monimage.jpg”, null, 150, 150);
Si vous omettez le dernier paramètre, l'image sera re-dimensionnée en conservant la proportionnalité
Exemple :
thumbnails::ResizeImage(“monimage.jpg”, “laminiature.jpg”, 150);


22/05/2007 11:41 -

iDo –