imagecreatefromjpeg not a valid JPEG file

Nouveau WRInaute
Depuis quelques temps, j'obtiens de + en + d'erreurs généré par la fonction imagecreatefromjpeg.

Cette instruction est appelée suite à l'upload d'un fichier JPG.

L'erreur se produit seulement sur certaine image, qui sont pourtant bien des JPG.

ex :
Warning: imagecreatefromjpeg(../photo/img1.jpg): is not a valid JPEG file

Il m'est donc impossible de poursuivre la procédure pour pouvoir creer une miniature par la suite à la volée.

Est ce que qqun à une solution ??

Merci
 
Nouveau WRInaute
Bonjour,

Tu devrais vérifier que le fichier jpg est réellement une image jpeg, par exemple en vérifiant le type avec getimagesize()

list($width, $height, $type, $attr) = getimagesize("toto.jpg");
echo $type;

Et si le type n'est pas 2 alors c'est certainement un bmp, png, gif ou tiff mal converti ou avec une mauvaise extension.

J'ai moi aussi ce souci avec des fichiers jpg que la GD considère comme des bmp (type=6), et comme c'est pas géré par la GD ... ca plante :?
 
Nouveau WRInaute
Merci pour ta réponse Wikizic.

Je viens de faire le test une fois de plus avec ta méthode et le type vaut bien 2.
Cela confirme que c'est bien du jpg mais lorsque j'utilise imagecreatefromjpeg ca plante.

Si qqun veut bien m'aider, j'envoie une jpeg qui me pose ce probleme.

Merci
 
WRInaute occasionnel
Je crois que la méthode la plus fiable pour tester l'image est celle là :

Code:
if(@exif_imagetype($_FILES['userfile']['tmp_name']) == IMAGETYPE_JPEG)
 
Nouveau WRInaute
C'est peut-être aussi un problème de version de GD ?

Sinon tu peux essayer d'installer et tester ImageMagick à la place de la GD. :wink:
 
Nouveau WRInaute
Ok, sgaze je prends note de tes conseils.

Ton test confirme que mon image est bien du jpg.

Mais cela ne m'explique toujours pas pourquoi imaceatefromjpeg me dit que l'image en question n'est pas un JPG valide (voir message d'erreur + haut).
 
WRInaute occasionnel
Parfois cela survient quand le fichier est altéré. J'ai déjà eu ça sur un fichier jpeg qui s'affichait pourtant bien dans Internet Explorer, mais dans FireFox quand on regardait les propriétés on voyait qu'il était altéré. php ne peut alors pas le lire (il est très sensible)
 
Discussions similaires
Haut