Création d'une image miniature

Contenu du snippet

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

A voir également

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.