Citation :
<?
function BlankImage($width, $height)
{
// cette fonction génère une image d'erreur
if ((!$width) || ($width < 50)) $width = 50;
if ((!$height) || ($height < 50)) $height = 50;
$im = ImageCreate ($width,$height);
$bcg = ImageColorAllocate ($im, 255, 255, 255);
$tc = ImageColorAllocate ($im, 0, 0, 0);
ImageFilledRectangle ($im, 0, 0, $width, $height, $bcg);
ImageString($im, 1, 5, $height/2, "pas d'aperçu", $tc);
return $im;
}
function SmallImg($imgPath, $Height, $srcSize)
{
$dir_name = dirname($imgPath);
$dest = basename($imgPath); // path info
$destInfo = pathInfo($dir_name);
// lecture de l'image d'origine
switch ($srcSize[2]) {
case 1: //GIF
$srcImage = @ImageCreateFromGif($imgPath);
break;
case 2: //JPEG $srcImage = @ImageCreateFromJPEG($imgPath);
break;
case 3:
$srcImage = @ImageCreateFromPng($imgPath);
break;
}
// si lecture impossible on affiche l'image d'erreur
if (!$srcImage) {
if ( $Width == 0 ) {
$Width = $Height ;
}
$destImage = BlankImage($Width, $Height);
}
else
// on calcul la vignette
{
// Calcule largeur image
$srcRatio = $srcSize[0]/$srcSize[1];
$destSize[1] = $Height;
$destSize[0] = $Height*$srcRatio;
//path rectification
if ($destInfo['extension'] == "gif" ) {
$imgPath = substr_replace($dest, 'jpg', -3);
}
// true color image, with anti-aliasing
$destImage = imageCreateTrueColor($destSize[0],$destSize[1]);
// l'anti alias ne marche pas avec GED 1.8
//imageAntiAlias($destImage,true);
// resampling
imageCopyResampled($destImage, $srcImage, 0, 0, 0, 0,$destSize[0],$destSize[1],$srcSize[0],$srcSize[1]);
}
return $destImage;
}
function smallFileName($imgPath, $Height)
{
// Cette fonction génère le non du fichier 'Cache' en fonction des paramètres
// la vignette est générée dans le sous répertoire 'small' du répertoire de l'image en cours
$dir_name = explode("/", dirname($imgPath));
if (!$dir_name[2]) $dir_name[2]=$dir_name[1] ;
$file_name = basename($imgPath);
return $dir_name[1] . "/small/" . $dir_name[2] . "_" . $Height . "$file_name";
}
/*------------------------------------------------------------------------------
Debut d'execution du script :
recupere les parametres suivants $dest , $src et $Height
------------------------------------------------------------------------------*/
// qualite des vignettes : moyen = 50 superieur = 100
$qualite = 75 ;
// generation du nom du fichier cache
$smallFile = smallFileName( $imgPath, $Height );
// extension image 1 gif 2 jpg 3 png
$srcSize = getImageSize($imgPath);
switch ($srcSize[2]) {
case 1:
case 2:
Header ("Content-Type: image/jpeg" );
break;
case 3:
Header ("Content-Type: image/png" );
break;
default:
return false;
break;
}
/* si le fichier existe, on ne le calcule pas,
il est lu et son contenu envoye directement */
if (file_exists($smallFile)) {
$image = fread(fopen($smallFile, "rb" ), filesize($smallFile)); // lecture
echo $image; // envoie
}
// le fichier n'existe pas, il est cree , enregistre et envoye
else {
$image = SmallImg ( $imgPath, $Height, $srcSize ); // création de la vignette
switch ($srcSize[2]) {
case 1:
case 2:
@ImageJpeg( $image,$smallFile,$qualite ); // on stocke le ficher sur le disque
ImageJpeg( $image ); // on envoie le fichier au navigateur
break;
case 3:
@ImagePng( $image,$smallFile); // on stocke le ficher sur le disque
ImagePng( $image ); // on envoie le fichier au navigateur
break;
}
}
?>
|