CRÉATION D'UNE IMAGE MINIATURE

cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008 - 22 févr. 2006 à 14:17
tely33 Messages postés 3 Date d'inscription jeudi 10 novembre 2005 Statut Membre Dernière intervention 7 décembre 2006 - 23 janv. 2007 à 10:02
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/36159-creation-d-une-image-miniature

tely33 Messages postés 3 Date d'inscription jeudi 10 novembre 2005 Statut Membre Dernière intervention 7 décembre 2006
23 janv. 2007 à 10:02
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 ?
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
18 oct. 2006 à 12:45
Pour récupérer une extension :

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

++
theroman Messages postés 10 Date d'inscription mardi 22 février 2005 Statut Membre Dernière intervention 27 juin 2006
28 juin 2006 à 12:31
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
PyRuSs Messages postés 16 Date d'inscription lundi 2 juin 2003 Statut Membre Dernière intervention 26 juin 2006
26 juin 2006 à 12:37
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)
PyRuSs Messages postés 16 Date d'inscription lundi 2 juin 2003 Statut Membre Dernière intervention 26 juin 2006
26 juin 2006 à 12:05
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?
cs_darkduck Messages postés 138 Date d'inscription vendredi 28 février 2003 Statut Membre Dernière intervention 29 février 2008 1
16 mars 2006 à 21:25
J'ai modifié et optimisé le script en en faisant une fonction (c'est plus pratique je trouve pour l'utilisation). Cette fonction se contacte de, si tout se passe bien, sauvegarder l'image miniature dans un répertoire au choix, on peut choisir les dimensions, le préfixe et même si le fichier original doit être supprimé.
Pour ma part j'utilise cette fonction après un upload et c'est vraiment très pratique !

Voici la fonction :

function make_miniature($img, $max_width=400, $max_height=400, $repertoire_destination='./', $prefixe='mini-', $supprimer_original=false)
{
/*Fonction qui créer la mimiature d'une image.
Retourne true si la miniature a bien été créée, un message d'erreur sinon

Liste des paramètres :
- $img : Chemin relatif du répertoire dans lequel se trouve l'image originale
- $max_width : Largeur maximale pour la miniature
- $max_height : Hauteur maximale pour la miniature
- $repertoire_destination : Répertoire dans lequel doit être sauvegardée la miniature
- $prefixe : Préfixe donné à la miniature (Ex : "ma-photo.jpg" devient "mini-ma-photo.jpg"
- $supprimer_original : Si est égal à true on supprime l'image originale

/*Initialisations*/
$reussi = false;
$message = '';

/*on ouvre le fichier*/
$file = fopen($img,'r');

if ($file !== false) //Le fichier existe
{
/*On recupere le nom de l'image*/
$nom = $prefixe.basename($img);

/*getimagesize() renvoie FALSE si le fichier n'est pas une image*/
if (false !list($largeur_orig,$hauteur_orig,$extension) getimagesize($img))
{
/*On récupère l'extension de l'image*/
$extension_img = substr(strchr($img,'.'),1);

/*On vérifie que le fichier soit bien au format jpg, gif ou png*/
if(ereg('(jpeg|jpg|gif|png)$',$extension_img))
{
switch ($extension)
{
case 1: // GIF
$type_img = imagecreatefromgif($img); break;
case 2: //JPEG
$type_img = imagecreatefromjpeg($img); break;
case 3: // PNG
$type_img = imagecreatefrompng($img); break;
}


/*On verifie la taille*/
if(($largeur_orig > $max_width) || ($hauteur_orig > $max_height))
{
// si l'image est trop large ou trop haute
if ($largeur_orig > $hauteur_orig)
{
// image plus large que haute
$hauteur = round(($hauteur_orig * $max_width) / $largeur_orig);
$largeur = $max_width;
}
else
{
// image plus haute que large
$hauteur = $max_height;
$largeur = round(($largeur_orig * $max_height) / $hauteur_orig);
}
}
else
{
$largeur = $largeur_orig;
$hauteur = $hauteur_orig;
}

/*On créer la miniature*/
$src = imagecreatetruecolor($largeur,$hauteur);
imagecopyresized($src,$type_img,0,0,0,0,$largeur,$hauteur,$largeur_orig,$hauteur_orig);

/*On sauvegarde la miniature*/
imagejpeg($src, $repertoire_destination.$nom);

/*On libere la memoire utilisée par cette image.*/
imagedestroy($src);

/*On supprime éventuellement l'image originale*/
if ($supprimer_original === true)
unlink($img);
}
else
{
$message = 'Erreur : L\'extension de l\'image est '.$extension_img.' ! Elle devrait être JPG, JPEG, GIF ou PNG';
}
}
else
{
$message = 'Erreur : Le fichier n\'est pas une image !';
}
}
else
{
$message = 'Erreur : Le fichier n\'existe pas !';
}

if ($reussi)
return true;
else
return $message;

}
Palleas_44 Messages postés 130 Date d'inscription lundi 12 décembre 2005 Statut Membre Dernière intervention 19 avril 2009
2 mars 2006 à 19:40
Merci =)
makaveli244 Messages postés 14 Date d'inscription vendredi 7 novembre 2003 Statut Membre Dernière intervention 23 avril 2007
2 mars 2006 à 14:50
bien fé
spycollege Messages postés 50 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 8 mars 2007
1 mars 2006 à 21:27
excuse-moi, l'erreur vient de moi, j'avais fait une combine avec un autre code qui aplatissait l'image... l'embrouille, quoi. :S
10/10 ;)
Palleas_44 Messages postés 130 Date d'inscription lundi 12 décembre 2005 Statut Membre Dernière intervention 19 avril 2009
27 févr. 2006 à 15:47
Qui conserve les proportions de l'image traitée ? mais elle le fait quand elle crée la miniature... Ou alors j'ai pas vraiment compris ce que tu voulais dire :$
spycollege Messages postés 50 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 8 mars 2007
27 févr. 2006 à 12:58
de plus palleas, il aurait été intéressant de proposer une fonction qui conserve les proportions de l'image traitée... ca ne doit pas être très difficile à intégrer dans ta source, et ca mettrait vraiment un plus, car sur phpcs je n'ai encore vu aucune source qui le propose. Du coup, ta source (très bien par ailleurs, lol) vient s'ajouter à une liste assez longue... (d'ailleurs darkduck, tu n'as pas dû chercher bcp car il y en a une bonne dizaine de sources comme ca sur le site!)
@+^^
cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008 1
25 févr. 2006 à 05:42
L'image d'erreur... pas besoin d'être 300x300
case 1: case 2:... tu pourrais mettre des constantes et mettre case TYPE_GIF...
Palleas_44 Messages postés 130 Date d'inscription lundi 12 décembre 2005 Statut Membre Dernière intervention 19 avril 2009
25 févr. 2006 à 00:30
7/10 ? pour une premiere source je suis assez content de moi merci :)
cs_darkduck Messages postés 138 Date d'inscription vendredi 28 février 2003 Statut Membre Dernière intervention 29 février 2008 1
25 févr. 2006 à 00:23
Bonjour, bon script surtout que j'en recherchais un (redimentionneur d'images) depuis longtemps.
Toutefois, il serait préférable de créer une fonction au lieu de récupérer des paramètres grâce à la fonction $_GET.
Lorsque je lance le script, la miniature est sauvegardée, mais j'obtiens le message suivant :
"L'image « http://darkduck/redim_img.php?img=test.jpg&xm=300&ym=300 » ne peut être affichée, car elle contient des erreurs."

Ce sera donc 7/10
Palleas_44 Messages postés 130 Date d'inscription lundi 12 décembre 2005 Statut Membre Dernière intervention 19 avril 2009
22 févr. 2006 à 15:40
Pourquoi faire l'image résultante d'erreur la grandeur de l'image voulue ?

Des define pour les case 1: case 2: seraient appréciés.

C'est à dire ? oO
cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008 1
22 févr. 2006 à 14:17
Ligne Inutile
$bgcolor=imagecolorallocate($src,255,0,0);

Le 2e paramètre est le font... seulement de 1 à 5 inclusivement
imagestring($src,10,2,($ym-20)/2,"FORMAT",$tcolor);

Pourquoi faire l'image résultante d'erreur la grandeur de l'image voulue ?

Des define pour les case 1: case 2: seraient appréciés.
Rejoignez-nous