2010-10-10 15 views
6

J'ai reçu cet avertissement lorsque des personnes téléchargent des images sur notre site:redouté "Attention: imagecreatefromjpeg(): '/ tmp/filename' n'est pas un fichier JPEG valide dans /phpfile.php sur la ligne xxx"

Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: gd-jpeg: JPEG library reports unrecoverable error: in /home/pathremoved/includes/snapsutils.php on line 220

Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: '/tmp/phpiw4MFk' is not a valid JPEG file in /home/pathremoved.php on line 220

Warning: imagesx(): supplied argument is not a valid Image resource in /home/pathremoved.php on line 222

Warning: imagesy(): supplied argument is not a valid Image resource in /home/pathremoved.php on line 223

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in /home/pathremoved.php on line 240

Warning: imagecopyresampled(): supplied argument is not a valid Image resource in /home/pathremoved.php on line 242

Cela se produit uniquement avec certaines images, qui, lorsqu'il est ouvert dans tout programme sont ok, il a même ajouts de la version du site que j'ai sur localhost sans problème ... Je googlé un peu, mais rien trouvé concluant.

note taille php upload_max est 5M et post_max_size est 5M. Ce n'est pas un problème de téléchargement ou de mémoire. J'ai testé avec des images 4M sans problèmes.

toute aide appréciée.

+1

C'est une grande image !!! Cela pourrait-il être la cause? –

+0

non, j'ai téléchargé des images jusqu'à 5 Mo sans problèmes. –

+0

La seule chose qui ressort un peu dans l'image est que c'est un JPEG progressif, mais GD ne devrait pas avoir de problème avec ceux-ci. Ce n'est pas une image CMJN ou rien. Est-ce que cela fonctionne après un ré-enregistrement? –

Répondre

16

Après un peu fouiller sur Google, j'ai trouvé this bug report. Il semble que la bibliothèque GD soit moins tolérante aux fichiers JPEG buggés que les autres programmes. La solution proposée était de mettre GD à ignorer son erreur JPEG avant de traiter l'image, comme ceci:

ini_set("gd.jpeg_ignore_warning", 1); 

Espérons que cela fonctionnera pour vous. Un autre problème potentiel que vous pouvez rencontrer est de faire avec la mémoire. Il semble que GD conserve toutes les images en mémoire sous forme de bitmaps une fois qu'elles ont été ouvertes. Cela signifie qu'une image de 5 Mo peut réellement consommer plus de mémoire qu'un seul thread PHP est autorisé, ce qui entraîne une erreur fatale. J'ai eu ce problème avec quelques images téléchargées et j'ai dû réduire la taille de fichier maximum que j'ai permis de contourner le problème.

Bonne chance et espoir qui aide.

+0

merci pour l'indice, je l'ai mis mais malheureusement n'a pas résolu le problème. –

+0

Désolé, cela n'a pas fonctionné. Je viens de trouver dans le manuel PHP sur la page pour imagecreatefromjpeg: « Je trouve que:. imagecreatefromjpeg est pour .JPEG et .JPG terminent & imagecreatefromjpeg est pour .jpeg et .jpg se terminant Cette fonction est sensible à la casse. " Serait-ce cela? Je n'ai pas essayé cela donc je ne peux pas dire si c'est tout. En outre, si votre serveur Web a ImageMagick et l'extension Imagick installé peut-être vous pourriez essayer et voir si vous avez la même erreur ... – Jeremy

+1

Il y avait aussi ce commentaire dans le manuel: "Si vous obtenez cette erreur:" Attention: imagecreatefromjpeg(): gd-jpeg: la bibliothèque JPEG signale une erreur irrécupérable "puis vérifiez les fichiers JPEG s'ils sont sauvegardés au format CMJN (au lieu de RVB) alors GD ne parviendra pas à les charger (testé avec GD 2.0.12)". Enfin, il y avait des commentaires sur les images prises avec certaines caméras qui ont écrit des informations supplémentaires dans les en-têtes JPEG causant des problèmes.Espérons que l'une de ces idées résoudra votre problème. – Jeremy

-2

Cette image provoque une requête interminable au serveur dans Firefox (3.6.10). Firefox dit qu'il contient des erreurs.

+0

Je viens de l'essayer sur firefox mac (3.5.11) et ça s'ouvre bien. Aussi chrome, IE8 pas de problèmes ... –

+0

Oui, je peux voir l'image, mais le chargement ne se termine jamais et si j'essaie de l'arrêter, l'erreur ci-dessus apparaît. – ilcartolaio

0

Je suis également confronté au même problème.

nous avons utilisé ci-dessous le code pour résoudre ce problème et ça marche pour moi,

... 
$image = @ImageCreateFromJpeg($image_name); 
if (!$image) 
{ 
    $image= imagecreatefromstring(file_get_contents($image_name)); 
} 
... 

Hope this vous aide ... :)