2010-10-10 13 views
6

Bazı insanlar sitemize resim yüklediğinde bu uyarıyı alıyorum:korkuyor "Uyarı: imagecreatefromjpeg(): '/ tmp/dosyaadı' satırında /phpfile.php dosyasında geçerli bir JPEG dosyası değil" xxx "

Bu yalnızca herhangi bir programa açılan bazı görüntülerin, ile olur

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

herhangi bir sorun ile localhost üzerinde sahip sitenin sürümüne Tamam, hatta yüklenenler vardır ... biraz googled ama kesin bir şey bulamadık. ..

Not php upload_max boyutu 5M ve post_max_size 5M'dir. Bu bir yükleme veya bellek sorunu değil. 4M görüntülerle sorunsuz bir şekilde test ettim. Herhangi bir yardım için teşekkür ederiz.

+1

!!! Sebep bu olabilir mi? –

+0

hayır, 5MB'ye kadar görüntü yüklemeden sorun yaşamadım. –

+0

Görüntüde biraz öne çıkan tek şey, ilerici bir JPEG olması, ancak GD'nin bunlarla ilgili bir problem olmaması. Bu bir CMYK görüntüsü değil ya da hiçbir şey. Yeniden kaydettikten sonra çalışır mı? –

cevap

16

Google'da biraz gezindikten sonra this bug report'u buldum. GD kütüphanesinin buggy JPEG dosyalarına diğer programlardan daha az toleranslı olduğu görülmektedir. Çözelti böyle, görüntü işleme koymadan önce JPEG hatası en görmezden GD belirlemekti önerdi:

ini_set("gd.jpeg_ignore_warning", 1); 

Umarım sizin için çalışacaktır. Karşılaşabileceğiniz başka bir potansiyel problem, hafıza ile ilgili yapmaktır. Görünüşe göre GD, tüm görüntüleri, açıldıktan sonra bitmap olarak bellekte tutuyor. Bu, 5MB'lık bir görüntünün, tek bir PHP iş parçacığına izin verilenden daha fazla bellek tüketebileceği anlamına gelir ve bu da önemli bir hataya neden olur. Bazı görüntü yüklemelerinde bu sorunu yaşadım ve sorunun üstesinden gelmek için izin verilen maksimum dosya boyutunu azaltmam gerekiyordu.

İyi şanslar ve umarım yardımcı olur.

+0

ipucu için teşekkürler, bunu koydum ama maalesef sorunu çözmedim. –

+0

Üzgünüm, işe yaramadı. Sadece imagecreatefromjpeg için sayfada PHP kılavuzunda buldum: "Ben bulundu. .JPEG ve .JPG & imagecreatefromjpeg biten .jpeg ve .jpg içindir sonlandırma imagecreatefromjpeg olan Bu işlev harfe duyarlıdır. " Bu olabilir mi? Bunu denemedim, öyle mi diye söyleyemem. Ayrıca, eğer web sunucunuz ImageMagick ve Imagick uzantısı kuruluysa belki de bunu deneyebilir ve aynı hatayı görüp görmediğinizi görebilirsiniz ... – Jeremy

+1

Kılavuzda bu yorum da vardı: "Bu hatayı alırsanız:" Uyarı: imagecreatefromjpeg(): gd-jpeg: JPEG kütüphanesi, kurtarılamayan bir hatayı rapor eder, daha sonra JPEG dosyalarını kontrol eder. Eğer CMYK formatında (RGB yerine) kaydedilirlerse GD bunları yükleyemez (GD 2.0.12 ile test edilmiştir). Son olarak, JPEG başlıklarına fazladan bilgi yazarak, sorunlara neden olan bazı kameralarla çekilen resimler hakkında yorumlarda bulunuldu.Umarım bu fikirlerden biri probleminizi çözecektir. – Jeremy

-2

Bu görüntü, Firefox'ta (3.6.10) sunucuya bitmeyen bir istekte bulunur. Firefox, hata içerdiğini söylüyor.

+0

Sadece firefox mac'da (3.5.11) denedim ve iyi çalışıyor. Ayrıca krom, IE8 sorun yok ... –

+0

Evet, görüntüyü görüntüleyebilirim ancak yükleme asla bitmez ve durdurmaya çalışırsam yukarıdaki hata görüntülenir. – ilcartolaio

0

Aynı zamanda aynı sorunla da karşılaşıyorum. Bu ... Eğer yardımcı olur

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

Umut

Biz bu sorunu çözmek için kod aşağıda kullanılan ve benim için çalışıyor :) büyük resimdir

İlgili konular