Upload d'images : jpg->jpg fonctionne mais pas gif->jpg

Upload d'images : jpg->jpg fonctionne mais pas gif->jpg - PHP - Programmation

Marsh Posté le 17-03-2007 à 01:20:35    

Bonjour,
 
Inspiré par certains codes, mon envoie d'images est basé sur le code suivant :
 

Code :
  1. $i = 1;
  2.    while( ($i <= 9) && ($etape == 2) )
  3.    {
  4.     $largeur = 520;
  5.     $image_tmp = $_FILES["image-$i"]['tmp_name'];
  6.     $image_type = $_FILES["image-$i"]['type'];
  7.     $image_poids = $_FILES["image-$i"]['size'];
  8.     if ( $image_tmp != "" )
  9.     {
  10.      $extension = 0;
  11.      if ( ($image_type=="image/pjpeg" ) || ($image_type=="image/jpeg" ) )
  12.      {
  13.       $img = imagecreatefromjpeg($image_tmp);
  14.       $extension = 1;
  15.      }
  16.      if ( ($image_type=="image/x-png" ) || ($image_type=="image/png" ) )
  17.      {
  18.       $img = imagecreatefrompng($image_tmp);
  19.       $extension = 1;
  20.      }
  21.      if ( $image_type=="image/gif" )
  22.      {
  23.       $img = imagecreatefromgif($image_tmp);
  24.       $extension = 1;
  25.      }
  26.      if ( $extension == 1)
  27.      {
  28.       if ( $image_poids <= "1000000" )
  29.       {
  30.        $chemin = "/home/henol/public_html/v2/images/articles/temp/$idinscrit-$propositions-$i.jpg";
  31.        list($largeur_tmp, $hauteur_tmp) = getimagesize($image_tmp);
  32.        if ( $largeur_tmp > $largeur )
  33.        {
  34.         $hauteur = $largeur*$hauteur_tmp/$largeur_tmp;
  35.         $img_redim = imagecreatetruecolor($largeur,$hauteur);
  36.         imagecopyresampled($img_redim, $img, 0, 0, 0, 0, $largeur, $hauteur, $largeur_tmp, $hauteur_tmp);
  37.         Imagejpeg($img_redim,"$chemin" );
  38.         ImageDestroy($img_redim);
  39.         ImageDestroy($img);
  40.        }
  41.        else
  42.        {
  43.         move_uploaded_file($img_tmp,"$chemin" );
  44.        }
  45.       }
  46.       else
  47.       {
  48.        $statut = "L'image #$i doit avoir une taille maximale de 1Mo;<br />
  49.        Merci de réenvoyer vos images.";
  50.        $etape = "1";
  51.       }
  52.      }
  53.      else {
  54.       $statut = "L'image #$i doit être au format PNG,GIF ou JPG;<br />
  55.       Merci de réenvoyer vos images.";
  56.       $etape = "1";
  57.      }
  58.     }
  59.     $i++;
  60.    }


 
Lorsque j'upload des images jpg cela fonctionne, mais pas le gif ! j'ai beau avoir cherché pendant plusieurs heures, je ne comprend vraiment pas : l'image finale est pourtant normalement indépendante du format d'origine avec le createimagefrom
 
Donc l'image est bien reconnu comme gif, pusiquelle passe les tests d'extension, mais aucune image n'est créée dans le dossier... (pas de problème de chemin puisque je le rappelle, la création a partir d'un jpg fonctionne
 
merci beaucoup  :(

Reply

Marsh Posté le 17-03-2007 à 01:20:35   

Reply

Marsh Posté le 17-03-2007 à 12:12:43    

Personne ? :(

Reply

Marsh Posté le 17-03-2007 à 13:29:21    

Fais un imagejpeg($img); à la ligne 24 pour voir si l'image est correctement lue.


---------------
HAHAHA I M USING TEH INTERNET
Reply

Marsh Posté le 17-03-2007 à 13:32:56    

si tu as la version 2 de GD , tu n'as pas acces au gif  
 
il te faut la version 1.6 pour avoir les fonctions liées au gif

Reply

Marsh Posté le 17-03-2007 à 14:06:23    

flo850 a écrit :

si tu as la version 2 de GD , tu n'as pas acces au gif  
 
il te faut la version 1.6 pour avoir les fonctions liées au gif


 

Citation :

Does gd support GIF images?
 
Yes. Support for GIF was restored in gd 2.0.28 on July 21st, 2004. Support for creating GIF animations is also available. Note that gdlib-config --features can be used to list the image formats supported by gd. Versions of gdlib-config prior to recent updates do not support the --features option, which can be understood to mean that GIF is not available.  

http://www.libgd.org/FAQ#Does_gd_support_GIF_images.3F

Reply

Marsh Posté le 17-03-2007 à 14:21:20    

Master p a écrit :

Fais un imagejpeg($img); à la ligne 24 pour voir si l'image est correctement lue.


Ca fonctionne (ça affiche l'image)

Reply

Marsh Posté le 17-03-2007 à 14:25:12    

Et t'es sûr de tes images (poids, taille, nom) ?


---------------
HAHAHA I M USING TEH INTERNET
Reply

Marsh Posté le 17-03-2007 à 14:58:20    

Vérifie la valeur de retour de move_uploaded_file.


Message édité par sielfried le 29-04-2007 à 14:38:01

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 17-03-2007 à 15:33:52    

Ha tiens oui il y a une erreur;
Car si le gif est à une taille inférieure, il ne subit pas de transformation, il va directement au move uploaded file, qui le renomme en jpg sans traitement ;
je ne vois pas pourquoi l'image n'est pas créé, en tout cas il faudra changer ça, je donnerai des nouvelles de ça ce soir

Reply

Marsh Posté le 17-03-2007 à 20:05:37    

Hehe c'était ça;
ca reste marrant qu'il  ne veuille pas faire un moveuploadedfile d'un fichier gif vers un chemin dont l'extension est jpg
 
tant que je suis la, connaissez vous la différence entre imagecopyresampled et imagecopyresized ? je suis allé sur php.net mais je n'ai vu aucune différence, ils s'utilisent exactement de la même mannière..
 
merci

Reply

Marsh Posté le 17-03-2007 à 20:05:37   

Reply

Marsh Posté le 17-03-2007 à 20:18:31    

imagecopyresized() copie une partie rectangulaire d'une image dans une autre image de destination. dst_image est l'image de destination, src_image est l'image source. Si les dimensions de la source et de la destination ne sont pas égales, un étirement adéquat est effectué pour faire correspondre les deux.  
 
imagecopyresampled() copie une zone rectangulaire de l'image src_im vers l'image dst_im. Durant la copie, la zone est rééchantillonnée de manière à conserver la clarté de l'image durant une réduction.  
 
En gros (je suppose) la première fait un redimensionnement "à la bourrin", alors que la seconde utilise un filtre.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 17-03-2007 à 21:47:12    

Dak merci beaucoup
 
si vous avez un peu de temps j'ai un nouveau problème ... de preg replace
 
http://forum.hardware.fr/hfr/Progr [...] 2523_1.htm

Reply

Sujets relatifs:

Leave a Replay

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