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 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.
<?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; } } } ?>
C'est simple. Vous appelez la fonction thumbnails::ResizeImage avec ses paramètres :
thumbnails::ResizeImage($image, $newimage, $newwidth, $newheight)
Et voila, si thumbnails::ResizeImage retourne “true” tous c'est bien passé et $newimage à été créée.
22/05/2007 11:41 -
Discussion
très bon script, un seul regret c'est de ne pas pouvoir redimensionner dans une même largeur et hauteue avec le centrage de l'image sur fond blanc. Ca aurait été le pied