Création d'une image miniature

Soyez le premier à donner votre avis sur cette source.

Snippet vu 17 846 fois - Téléchargée 29 fois

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

Ajouter un commentaire Commentaires
Messages postés
3
Date d'inscription
jeudi 10 novembre 2005
Statut
Membre
Dernière intervention
7 décembre 2006

Salut,

J'ai un petit probleme concernant la partie switch($ext) puisque si mon image dépasse les 700ko environ, elle n'est pas crée. Sinon ça marche en dessous de cette taille (aucun msg d'erreur mais j'ai compris que le pb venait de là). Apperment c'est un probleme de mémoire mais existerait-il une manière de modifier le code pour que cela marche ?
Messages postés
488
Date d'inscription
samedi 5 avril 2003
Statut
Membre
Dernière intervention
31 mars 2009
4
Pour récupérer une extension :

<?php
$chaine = 'monTruc.png';
echo strtolower(pathinfo($chaine, PATHINFO_EXTENSION));
?>

++
Messages postés
10
Date d'inscription
mardi 22 février 2005
Statut
Membre
Dernière intervention
27 juin 2006

moi je met 9/10

po mal du.
ca te gene pas si je pique une partie pour l'integrer a un scripte qui affiche toute les image d'un dossier tout en creant des miniature (maintenent) et qui donne la posibiliter de laisser des commentaire et de voir l'original biensure.

et si ca tente quelqu'un romain@theroman.be

je le poste po vu le nombre effrayent de source a ce sujet
Messages postés
16
Date d'inscription
lundi 2 juin 2003
Statut
Membre
Dernière intervention
26 juin 2006

ok, ne cherchez plus! ^^

alors en fait, je conseil une petite modif lors de l'extraction de l'extention du fichier:
$extension_img = strtolower(substr(strchr($img,'.'),1));

En effet le probleme venai du fait que mes extentions a moi sont en MAJ... ^o)
Messages postés
16
Date d'inscription
lundi 2 juin 2003
Statut
Membre
Dernière intervention
26 juin 2006

j'ai pas tout compris au code, mais il doit y avoir une erreur kkpart, ou alors le dossier destination n'est pas cree automatiquement?
En faisant ca:
make_miniature(const_root . $p . $read_file, 200, 150, const_root . $p . '/mini/', 'mini_', false)
J'ai bien une reponse "Vrai" mais je ne trouve mes images nul part...

des infos?
Afficher les 16 commentaires

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.