(PHP 4 >= 4.0.6, PHP 5)
Envoie la miniature d'une image vers un navigateur ou un fichier.
imagethumb() génère une copie de l'image image_src aux dimensions maximales max_size et l'envoie vers un navigateur ou le fichier image_dest.
imagethumb() utilise la bibliothèque GD et retournera FALSE si celle-ci n'est pas disponible
imagethumb() fonctionne correctement avec les images de type Jpeg, Png et Gif. Dans le cas d'un Gif animé, seule la première frame sera utilisé.
imagethumb() gère la transparence.
<?php
function imagethumb( $image_src , $image_dest = NULL , $max_size = 100, $expand = FALSE, $square = FALSE )
{
if( !file_exists($image_src) ) return FALSE;
// Récupère les infos de l'image
$fileinfo = getimagesize($image_src);
if( !$fileinfo ) return FALSE;
$width = $fileinfo[0];
$height = $fileinfo[1];
$type_mime = $fileinfo['mime'];
$type = str_replace('image/', '', $type_mime);
if( !$expand && max($width, $height)<=$max_size && (!$square || ($square && $width==$height) ) )
{
// L'image est plus petite que max_size
if($image_dest)
{
return copy($image_src, $image_dest);
}
else
{
header('Content-Type: '. $type_mime);
return (boolean) readfile($image_src);
}
}
// Calcule les nouvelles dimensions
$ratio = $width / $height;
if( $square )
{
$new_width = $new_height = $max_size;
if( $ratio > 1 )
{
// Paysage
$src_y = 0;
$src_x = round( ($width - $height) / 2 );
$src_w = $src_h = $height;
}
else
{
// Portrait
$src_x = 0;
$src_y = round( ($height - $width) / 2 );
$src_w = $src_h = $width;
}
}
else
{
$src_x = $src_y = 0;
$src_w = $width;
$src_h = $height;
if ( $ratio > 1 )
{
// Paysage
$new_width = $max_size;
$new_height = round( $max_size / $ratio );
}
else
{
// Portrait
$new_height = $max_size;
$new_width = round( $max_size * $ratio );
}
}
// Ouvre l'image originale
$func = 'imagecreatefrom' . $type;
if( !function_exists($func) ) return FALSE;
$image_src = $func($image_src);
$new_image = imagecreatetruecolor($new_width,$new_height);
// Gestion de la transparence pour les png
if( $type=='png' )
{
imagealphablending($new_image,false);
if( function_exists('imagesavealpha') )
imagesavealpha($new_image,true);
}
// Gestion de la transparence pour les gif
elseif( $type=='gif' && imagecolortransparent($image_src)>=0 )
{
$transparent_index = imagecolortransparent($image_src);
$transparent_color = imagecolorsforindex($image_src, $transparent_index);
$transparent_index = imagecolorallocate($new_image, $transparent_color['red'], $transparent_color['green'], $transparent_color['blue']);
imagefill($new_image, 0, 0, $transparent_index);
imagecolortransparent($new_image, $transparent_index);
}
// Redimensionnement de l'image
imagecopyresampled(
$new_image, $image_src,
0, 0, $src_x, $src_y,
$new_width, $new_height, $src_w, $src_h
);
// Enregistrement de l'image
$func = 'image'. $type;
if($image_dest)
{
$func($new_image, $image_dest);
}
else
{
header('Content-Type: '. $type_mime);
$func($new_image);
}
// Libération de la mémoire
imagedestroy($new_image);
return TRUE;
}
?>
bool imagethumb ( string $image_src [, string $image_dest = null [, int $max_size = 100 [, bool $expand = false [, bool $square = false ]]]] )
Cette fonction retourne TRUE en cas de succès ou FALSE si une erreur survient.
Exemple #1 Exemple avec imagethumb()
<?php $image_src = 'image.jpg'; imagethumb($image_src); // Envoie une miniature de "image.jpg" au navigateur ?>
Exemple #2 Exemple avec imagethumb()
<?php $image_src = 'image.png'; $image_dest = 'thumb.png'; imagethumb($image_src, $image_dest, 90); // Créé une miniature de "image.png" de maximum 90 pixels et l'enregistre dans le fichier "thumb.png" ?>
Exemple #3 Exemple avec imagethumb()
<?php
// Exemple avec une image fraichement uploadée
if( isset($_FILES['image']) && !$_FILES['image']['error'] && $imagesize=getimagesize($_FILES['image']['tmp_name']) )
{
$extension = str_replace(array('image/','jpeg'), array('', 'jpg'), $imagesize['mime']);
$filename = time() .'.'. $extension;
$image_path = 'images/' .$filename;
$thumb_path = 'images/thumb_'. $filename;
move_uploaded_file($_FILES['image']['tmp_name'], $image_path);
imagethumb($image_path, $thumb_path, 120);
}
?>
Commentaire(s)
Poster un commentaire