Problème redimensionnement image [RESOLU]

Problème redimensionnement image [RESOLU] - PHP - Programmation

Marsh Posté le 14-07-2005 à 13:25:17    

Bonjour à tous,
 
Je souhaite créer une miniature d'une image original. Le tout en jpg.
Le problème que je rencontre est que la création de la miniature se fait, mais impossible d'obtenir la taille souhaité. Cela me créé une sorte de copy au même dimension que la précédente.
 
Ca peut venir d'où ? Moi même j'ai dû mal à savoir d'où ca vient.
 
Voici le code source :

Code :
  1. $dir = "img/";
  2. $ratio = 100;
  3. $img = "20010111020512_9051.jpg";
  4. $quality = 80;
  5. $src = imagecreatefromjpeg($dir.$img);
  6. $size = getimagesize($dir.$img);
  7. $t = round(($ratio * $size[1]) / $size[0]);
  8. $newImg = imagecreate($ratio, $t);
  9. echo $ratio." - ".$t."<br><br>";
  10. if(imagecopyresized($newImg, $src, 0, 0, 0, 0, $ratio, $t, 200, 150))
  11.   echo "Ok<br><br>";
  12. else
  13.   echo "Non Ok<br><br>";
  14. $miniature = "mini_".$img;
  15. ImageJpeg($src, $dir.$miniature, $quality);
  16. echo "<img src=\"".$dir.$miniature."\" />";


 
Merci d'avance.


Message édité par AlphaZone le 14-07-2005 à 14:22:02
Reply

Marsh Posté le 14-07-2005 à 13:25:17   

Reply

Marsh Posté le 14-07-2005 à 13:36:35    

Dans ton imagecopyresized, tu fais la copie sur l'image de destination $newImg, mais dans ton ImageJpeg, tu écris $src.
 
Autre chose, utilise plutot la fonction 'imagecopyresampled' qui donne de bien meilleur résultat et utilise également les fonctions GD imagesx et imagesy pour avoir la taille d'une image GD, ça évite un accès disque pour avoir la taille.

Reply

Marsh Posté le 14-07-2005 à 13:40:21    

Tu ne definis pas de header :heink:
Tu crees une image et tu fais des echo dans le script :heink:
Qu'est ce que c'est que ca : echo "<img src=\"".$dir.$miniature."\" />"; :heink:
 
J'en reviens pas que ca puisse t'afficher quelque chose :heink:
 
Edit : haaaaaaaan ... tu ne crees pas une image a la volée ... tu crees un fichier miniature !
du coup g rien dit  :heink:


Message édité par afbilou le 14-07-2005 à 13:42:30
Reply

Marsh Posté le 14-07-2005 à 13:43:26    

afbilou a écrit :

Tu ne definis pas de header :heink:
Tu crees une image et tu fais des echo dans le script :heink:
Qu'est ce que c'est que ca : echo "<img src=\"".$dir.$miniature."\" />"; :heink:
 
J'en reviens pas que ca puisse t'afficher quelque chose :heink:


 
De quoi tu parles, l'header est généré par GD.
 
Perso, je ne mets jamais d'header de toute façon. :D
 
Edit : Bon bah j'ai presque rien dit non plus alors. :D


Message édité par The-Shadow le 14-07-2005 à 13:44:19
Reply

Marsh Posté le 14-07-2005 à 13:57:48    

The-Shadow a écrit :

Dans ton imagecopyresized, tu fais la copie sur l'image de destination $newImg, mais dans ton ImageJpeg, tu écris $src.
 
Autre chose, utilise plutot la fonction 'imagecopyresampled' qui donne de bien meilleur résultat et utilise également les fonctions GD imagesx et imagesy pour avoir la taille d'une image GD, ça évite un accès disque pour avoir la taille.


Merci mec !
J'ai résolu mon problème grace à toi [:and garfunkel]

Reply

Marsh Posté le 14-07-2005 à 14:07:33    

Voici le code source qui fonctionne cette fois :)
 

Code :
  1. // --- PARAMETRES ---------------------------------------
  2. $dir = "img/";
  3. $ratio = 100;
  4. $img = "20010111020512_9051.jpg";
  5. $miniature = "mini_".$img;
  6. $quality = 80;
  7. // --- Création de l'image à partir d'un lien -----------
  8. $src = imagecreatefromjpeg($dir.$img);
  9. // --- Récupération dimension ---------------------------
  10. $size = array(imagesx($src), imagesy($src));
  11. $t = round(($ratio * $size[1]) / $size[0]);
  12. // --- Création de l'image en miniature -----------------
  13. $newImg = imagecreatetruecolor($ratio, $t);
  14. // --- Redimensionnement --------------------------------
  15. if(!imagecopyresampled($newImg, $src, 0, 0, 0, 0, $ratio, $t, $size[0], $size[1]))
  16.   echo "Erreur de redimensionnement<br />";
  17. // --- Enregistrement de la miniature -------------------
  18. ImageJpeg($newImg, $dir.$miniature, $quality);
  19. echo "<a href=\"".$dir.$img."\" target=\"_blank\"><img src=\"".$dir.$miniature."\" border=\"0\" /></a>";


Message édité par AlphaZone le 14-07-2005 à 14:07:45
Reply

Marsh Posté le 16-07-2005 à 13:39:26    

Bonjour,  
chez moi le script d'AlphaZone ne marche pas il me dit :  
Fatal error: Call to undefined function: imagecreatefromjpeg() pour la ligne 9
je comprends pas cette erreur ?

Reply

Marsh Posté le 16-07-2005 à 13:43:05    

c'est une erreur typique de la non présence de GD sur ton ordi.
fait un phpinfo.

Reply

Marsh Posté le 16-07-2005 à 13:57:01    

c'est quoi un phpinfo?

Reply

Marsh Posté le 16-07-2005 à 14:00:38    

Tu fais un tout petit script, dedans tu mets  

Code :
  1. <?php phpinfo(); ?>


 
Tu le lances, il va te donner les infos sur ta config PHP, reste plus qu'à voir ensuite si il y a des parties consacrés à GD dans les infos, si oui, c'est cool, si non, c'est qu'il ne doit pas être installé.

Reply

Marsh Posté le 16-07-2005 à 14:00:38   

Reply

Marsh Posté le 16-07-2005 à 14:44:07    

et jdois regarder quoi maintenant ?

Reply

Marsh Posté le 17-07-2005 à 08:12:18    

cmoijulie a écrit :

et jdois regarder quoi maintenant ?


Normalement tu dois avoir ceci :
http://djay18100.free.fr/gd.gif
 
Si tu ne vois pas cette config, alors c'est que ta librairie GD n'est pas installer.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed