Redimenssionner image

fvv Messages postés 3 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 31 janvier 2009 - 15 juin 2008 à 10:30
fvv Messages postés 3 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 31 janvier 2009 - 15 juin 2008 à 20:05
Bonjour,

Le code que j'utilise pour réduire la taille de mes images ne marche
pas : ça me crée une miniature 150*150 dans le bon dossier mais
toute noire!

Je n'arrive pas à comprendre pourquoi. merci de m'aider...

functionredim($img)
{
//largeur et hauteur max de l'image =150 px puis on cherche à calculer au mieux les dimenssions pour ne pas déformer l'image

//on récupére les dim de l'image source
$size=GetImageSize('images/'.$img);
$img_largeur=$size[0];
$img_hauteur=$size[1];

if($img_largeur==$img_hauteur)
{
$mini_largeur=150;
$mini_hauteur=150;
}

if($img_largeur>$img_hauteur)
{
$mini_largeur=150;
$rapport=150/$img_largeur;
$mini_hauteur=round(rapport*$img_hauteur);
}

if($img_largeur<$img_hauteur)
{
$mini_hauteur=150;
$rapport=150/$img_hauteur;
$mini_largeur=round(rapport*$img_largeur);
}

//je récupére l'extension de l'image à redimmenssionner
$extension=pathinfo('images/'.$img,PATHINFO_EXTENSION);

//je traite chacun des trois cas avec la fonction correspondante : jpeg, png ou gif

if($extension=='jpeg'or$extension=='jpg'or$extension=='JPEG'or$extension=='JPG')
{
$source=imagecreatefromjpeg('images/'.$img);
$destination=imagecreatetruecolor(150,150);// On crée la miniature vide
imagecopyresampled($destination,$source,0,0,0,0,$mini_largeur,$mini_hauteur,$img_largeur,$img_hauteur);
imagejpeg($destination,'mini_images/'.$img,100);// on enregistre l'image en gardant le même nom dans le dossier "mini_images"
}

if($extension=='png'or$extension=='PNG')
{
$source=imagecreatefrompng('images/'.$img);
$destination=imagecreatetruecolor(150,150);
imagecopyresampled($destination,$source,0,0,0,0,$mini_largeur,$mini_hauteur,$img_largeur,$img_hauteur);
imagepng($destination,'mini_images/'.$img,100);
}

if($extension=='gif'or$extension=='GIF')
{
$source=imagecreatefromgif('images/'.$img);
$destination=imagecreate(150,150);
imagecopyresampled($destination,$source,0,0,0,0,$mini_largeur,$mini_hauteur,$img_largeur,$img_hauteur);
imagegif($destination,'mini_images/'.$img,100);
}
}

redim("d.jpg");
?>

2 réponses

Bling 182 Messages postés 510 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 5 juillet 2009 3
15 juin 2008 à 15:25
Ben tu spécifies la taille (150x150) en dur, dans ton code pour la création de la miniature, donc la taille, c'est normal.

Le reste m'a l'air juste.

Et oublies pas les imagedestroy() a la fin de ta fonction, sinon tu vas avoir des surprises (fuites mémoire).
0
fvv Messages postés 3 Date d'inscription lundi 9 juin 2008 Statut Membre Dernière intervention 31 janvier 2009
15 juin 2008 à 20:05
En fait j'ai trouvé mon erreur trop bête j'avoue : j'ai oublié les $ devant rapport au moment du calcul des nouvelles dimensions du coup ça plantait au moment de reproduire l'image
je m'en suis rendu compte parceque il se passait plus rien quand je mettais $mini_largeur, $mini_hauteur au lieu de 150 dans imagecreatetruecolor
0
Rejoignez-nous