Bonjour à tous,
Voilà, pour les besoins de mon site je cherchais un code permettant de créer des miniatures qui ne sont pas limitées en largeur ou hauteur maximale, mais en surface maximale (afin que les logos de tout le monde soient affichés équitablements).
Donc voilà le code, c'est pas grand chose, et c'est un modification d'un code déjà existant. Donc rien de bien glorieux, je le poste uniquement si d'autres personnes cherchent la même chose que moi
Supporte les format Gif, Jpeg et PNG
Source / Exemple :
<?php
// Crée des images miniatures
// Nécessite la librairie "php_gd2"
/*utilisation de la fonction :
$path = chemin d'accès au dossier contenant la photo
$fichierSource = nom de la photo
$surface = surface maximale autorisée pour l'image
$destination = dossier de destination de la photo, par rapport à l'emplacement de la fonction */
function CreateThumb($path, $fichierSource, $surface, $destination)
{
//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:
return 0;
}
$largeurSource = imagesx($source);
$hauteurSource = imagesy($source);
//calcul le rapport entre largeur et longueur...
$rapport_dim= $largeurSource / $hauteurSource;
// Si la surface de l'image actuelle est trop grande par rapport à la limite
if ( ($largeurSource * $hauteurSource) > $surface ) {
$largeurDestination = floor( sqrt( $rapport_dim * $surface ) );
$hauteurDestination = $largeurDestination / $rapport_dim;
} else {
$largeurDestination = $largeurSource;
$hauteurDestination = $hauteurSource;
}
//crée l'image (taille de l'imange source + taille de l'ombre)
$im = ImageCreateTrueColor ($largeurDestination, $hauteurDestination);
//rempli le fond de blanc
$blanc=ImageColorAllocate ($im, 255, 255, 255);
ImageFill($im, 0, 0, $blanc);
ImageColorTransparent ($im, $blanc);
//ajoute par dessus l'image source miniaturisée
ImageCopyResampled($im, $source, 0, 0, 0, 0, $largeurDestination, $hauteurDestination, $largeurSource, $hauteurSource);
//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 1;
}
?>
Conclusion :
En espérant que ça vous serve
MadMatt
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.