De nombreux sites ont besoin de créer une image miniature pour par exmpple dans le cas de forumsn ne pas deformer le design ou dans le cas des galleries pour afficher un apercu de l'image.
Source / Exemple :
<?php
/*
Script réalisé par PALLEAS palleas@hotmail.fr
Aide :
3 valeurs sont passées dans l'url :
-$img : la source de l'image
-$xm : largeur maximale de l'image soit la largeur de la miniature créée
-$ym : hauteur maximale de l'image soit la hauteur de la miniature créée
// debut du script
/* si aucune dimension n'est soumise :
on definit les dimensions par défaut.*/
if(isset($_GET['xm']) && !empty($_GET['xm'])) {
$xm=$_GET['xm'];
} else {
$xm=100;
}
if(isset($_GET['ym']) && !empty($_GET['ym'])) {
$ym=$_GET['ym'];
} else {
$ym=100;
}
// on ouvre le fichier
$file=@fopen($_GET['img'],'r');
// s'il n'est pas ouvert
if(!$file) {
$src=imagecreatetruecolor($xm,$ym);
$bgcolor=imagecolorallocate($src,255,0,0);
$tcolor=imagecolorallocate($src,255,0,0);
imagestring($src,10,2,($ym-20)/2,"IMAGE",$tcolor);
imagestring($src,10,2,($ym+20)/2,"INTROUVABLE",$tcolor);
} else {
// s'il est ouvert
// on recupere le nom de l'image
$nom = 'mini_'.basename($_GET['img']);
// getimagesize() renvoie FALSE si le fichier n'est pas une image
// s'il renvoie false
if(!list($largeur_orig,$hauteur_orig,$ext) = getimagesize($_GET['img'])) {
$src=imagecreatetruecolor($xm,$ym);
$bgcolor=imagecolorallocate($src,255,0,0);
$tcolor=imagecolorallocate($src,255,0,0);
imagestring($src,10,2,($ym-20)/2,"FORMAT",$tcolor);
imagestring($src,10,2,($ym+20)/2,"INCORRECT",$tcolor);
} else {
// s'il renvoie true
// si le fichier est bien au format jpg, gif ou png :
if(ereg('(jpeg|jpg|gif|png)$',$_GET['img'])) {
// begin switch
switch ($ext) {
case 1: // GIF
$im=imagecreatefromgif($_GET['img']);
break;
case 2: //JPEG
$im=imagecreatefromjpeg($_GET['img']);
break;
case 3: // PNG
$im=imagecreatefrompng($_GET['img']);
break;
}
// fin switch
// on verifie la taille
if($largeur_orig>$xm || $hauteur_orig>$ym) {
// si l'image est trop large ou trop haute
if ($largeur && ($largeur_orig > $hauteur_orig)) {
// image plus large que haute
$hauteur = ($hauteur_orig * $xm)/$largeur_orig;
$largeur=$xm;
} else {
// image plus haute que large
$hauteur = $ym;
$largeur = ($largeur_orig *$ym)/$hauteur_orig;
}
} else {
$largeur=$largeur_orig;
$hauteur=$hauteur_orig;
}
// on calcule position de l'image
$py=($ym-$hauteur)/2;
$px=($xm-$largeur)/2;
// on crée une image noir (fond si jamais l'image est plus petite que le cadre)
$src = imagecreatetruecolor($xm,$ym);
$black= imagecolorallocate($src,0,0,0);
imagecopyresampled($src,$im,$px,$py,0,0,$largeur,$hauteur,$largeur_orig,$hauteur_orig);
} else {
// si l'image est au mauvais format
$src=imagecreatetruecolor($xm,$ym);
$bgcolor=imagecolorallocate($src,255,0,0);
$tcolor=imagecolorallocate($src,255,0,0);
imagestring($src,10,2,($ym-20)/2,"FORMAT",$tcolor);
imagestring($src,10,2,($ym+20)/2,"INCORRECT",$tcolor);
}
}
}
// on definit l'en-tete
header ("Content-type: image/png");
// dossier de l'image (UNIQUEMENT SI SAUVEGARDE) :
// $dossier="images/minis/";
// imagepng($src,$dossier.$nom);
// enlever les commentaires d'au dessus si jamais on veut sauvarder l'image
// on crée l'image si l'on veut l'afficher.
imagepng($src);
// on libere la memoire utilisée par cette image.
imagedestroy($src);
?>
Conclusion :
Voila c'est la première source que je poste ici, elle surement optimisable et d'ailleur j'attend toutes vos remarques mais soyez pas trop mechant ok ? :P
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.