A partir d'un code trouvé sur ce site j'ai créé une fonction qui permet de faire et d'enregistrer des miniatures automatiquements en png, jpg, jpeg et gif.
Je ne suis pas un pro en php donc je ne pretends pas révolutionner le code que j'ai trouvé, mais je pense lui avoir apporté deux trois options importantes au niveau de la gestion d'erreurs et je lui ai permis de supporter d'autre format.
Chez moi ce code est inclus dans une page qui scanne un dossier et liste toutes les images qu'il contient, je n'ai pas besoin d'avoir des messages d'erreur toutes les deux secondes. Je veux juste savoir s'il a réussi à créer une miniature ou pas.
La capture d'écran montre une image originale et sa miniature. (l'originale étant une capture de mon écran :)
Source / Exemple :
<?php
function redim($nom, $adresse, $taille)
{
$valeur_retourne=false;
$img=$adresse."".$nom;
if( function_exists('imagecreatetruecolor') )
{
$size = getimagesize($img);
// ouverture de l'image d'origine avec test pour
//eviter les erreurs si db n'est pas active
switch ( $size[2] )
{
case 1 : //'image/gif';
$img_big = imagecreatefromgif($img);
break;
case 2 : //'image/jpeg';
$img_big = imagecreatefromjpeg($img);
break;
case 3 : //'image/png';
$img_big = imagecreatefrompng($img);
break;
default:
$img_big=false;
break;
}
if($img_big)
{
if($taille && ereg("^[0-9]{2,}$", $taille) )
{ // Validation de la taille, défini et numérique supérieure à 2 chiffres
$cadre=$taille;
}
else
{
$cadre=150; // sinon, initialise la taille à 120.
}
$w1=$w0=$size[0];
$h1=$h0=$size[1];
if($w1>$cadre || $h1>$cadre )
{
if($cadre!=0 && $w1>$h1)
{
$w0=$cadre;
$h0=round($h1/($w1/$cadre));
} else
{
$h0=$cadre;
$w0=round($w1/($h1/$cadre));
}
$img_x=$w0;
$img_y=$h0;
// création de la miniature
$img_mini = @imagecreatetruecolor($img_x, $img_y)
or $img_mini = imagecreate($img_x, $img_y);
// copie de l'image, avec le redimensionnement.
imagecopyresampled($img_mini,$img_big,0,0,0,0,$img_x,$img_y,$size[0],$size[1]);
//on crée un dossier
$nom_miniature=$adresse."mini";
if (!file_exists($nom_miniature))
{
mkdir($nom_miniature, 0777);
}
//on enregistre l'image
$nom_miniature.="/mini_";
$nom_miniature.=$nom;
switch ( $size[2] )
{
case 1 : //'image/gif';
$enregistrement=imagegif($img_mini, $nom_miniature);
break;
case 2 : //'image/jpeg';
$enregistrement=imagejpeg($img_mini, $nom_miniature, 90); ;
break;
case 3 : //'image/png';
$enregistrement=imagepng($img_mini, $nom_miniature);
break;
default:
$enregistrement=false;
break;
}
//on libere la memoire du serveur
ImageDestroy($img_mini);
if($enregistrement)
{
$valeur_retourne=true;
}
} else
{
$valeur_retourne=false;
}
//on libere la memoire du serveur
ImageDestroy($img_big);
} else
{
$valeur_retourne=false;
}
}
return $valeur_retourne;
}
?>
Conclusion :
Merci de relever mes erreurs et de m'en informer.
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.