Si jamais vous avez besoin de créer des miniatures, par exemple pour un espace membre pour mettre des avatars (pas besoin de conserver sur la photo à 2Mo!), une galerie photo voila une fonction qui permet de générer des miniatures a partir de gif, jpeg, png.
Ce code n'est plus maintenu.
Cédric Strubel
Source / Exemple :
<?php
/*utilisation de la fonction :
$path=chemin d'accès au dossier contenant la photo
$fichierSource=nom de la photo
$grand=taille du plus grand coté (hauteur pour les portraits, largeur pour les paysages)
$destination=dossier de destination de la photo, par rapport à l'emplacement de la fonction */
function thumb($path,$fichierSource,$grand,$destination){
$ombre=$grand / 20;
//teste le format de l'image et crée l'image concerné
$image_size=getimagesize($path.$fichierSource );
switch ( $image_size[2] ) {
case 1 :
$source = ImageCreateFromGif($path.$fichierSource);
$mime_photo='image/gif';
break;
case 2 :
$source = ImageCreateFromJPEG($path.$fichierSource);
$mime_photo='image/jpeg';
break;
case 3 :
$source = ImageCreateFromPNG($path.$fichierSource);
$mime_photo='image/png';
break;
default:
echo '<br />Erreur de format image <strong>'.$fichierSource.'</strong>. Seuls les formats jpeg, gif et png sont supportés';
return false;
}
$largeurSource = imagesx($source);
$hauteurSource = imagesy($source);
//calcul le rapport entre largeur et longueur...
$rapport_dim= $largeurSource / $hauteurSource;
//test si image en portrait ou en paysage
if ( $largeurSource >= $hauteurSource ) {
$largeurDestination = $grand;
$hauteurDestination = $largeurDestination / $rapport_dim;
}
else {
$hauteurDestination = $grand;
$largeurDestination = $hauteurDestination * $rapport_dim;
}
//crée l'image ( taille de l'imange source + taille de l'ombre)
$im = ImageCreateTrueColor ($largeurDestination + $ombre, $hauteurDestination + $ombre)
or die ('<br />Erreur lors de la création image <strong>'.$fichierSource.'</strong>');
//rempli le fond de blanc
$blanc=ImageColorAllocate ($im, 255, 255, 255);
ImageFill($im, 0, 0, $blanc);
ImageColorTransparent ($im, $blanc);
//crée l'ombre
$col = ImageColorAllocate ($im, 130 ,130 ,130 );
ImageFilledRectangle ($im, $ombre, $ombre, $largeurDestination + $ombre, $hauteurDestination + $ombre, $col);
//ajoute par dessus l'image source miniaturisée
ImageCopyResampled($im, $source, 0, 0, 0, 0, $largeurDestination, $hauteurDestination, $largeurSource, $hauteurSource);
$noir=ImageColorAllocate ($im, 0, 0, 0);
ImageRectangle($im,0,0, $largeurDestination, $hauteurDestination, $noir);
//crée la miniature
switch ( $mime_photo) {
case 'image/jpeg' :
ImageJpeg ($im, $destination.'/'.$fichierSource);
break;
case 'image/gif' :
ImageGif ($im, $destination.'/'.$fichierSource);
break;
case 'image/png' :
ImagePng ($im, $destination.'/'.$fichierSource);
break;
}
return true;
}
$file='img.jpeg';
if(!is_file('./thumb/'.$file)) {
thumb('./',$file,100,'./thumb/') or die ('<br />La miniaturisation de <strong>'.$file.'</strong> a échoué...');
echo '<img src="./thumb/',$file,'" />';
}
?>
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.