2017-05-31 53 views
1

我正在創建一個小圖像上傳表單,沒有什麼奇特的。只有上傳允許有JPG文件 - 這是由PHP腳本這個檢查:php:jpeg mime類型 - 未檢測到與質量的Photoshop jpeg 12

$filesize = getimagesize($targetFile); 
if($filesize['mime'] != 'image/jpeg') { ... } 

可正常工作的大多數JPG文件,但我已經遇到了一些被拒絕。我用這個網站檢查了這些圖片:http://mime.ritey.com/ 並發現它只是返回"Unknown MIME type"而不是預期的"image/jpeg"

挖掘更深的那個非工作圖像,我發現它與photoshop和質量設置12(不是「保存爲web」對話框,只是定期保存對話框)保存。

如果我保存了質量爲11或更低的圖像,它會被識別爲「image/jpeg」。接下來,如果我拍下質量爲11的圖像並再次將其保存爲12級,則不再有效......

從我記憶中,質量級別12沒有正式爲jpgs指定,這是Adobe 。所以我想這可能會導致問題。

儘管如此,那些jpgs在那裏,那麼有沒有辦法用php將它們識別爲合法的jpeg文件?這種味道有沒有其他的啞劇型?或者通過其他方式來檢查它們是否爲jpeg(文件名後綴除外,這對我的情況來說不夠可靠)。

+0

你可以提供優質的12上傳一張圖片,然後回聲'$文件大小[「默」]'看MIME類型是什麼 – FMashiro

+0

呼應啞劇類型是「未知的MIME類型」也在我自己的服務器上 (對於此質量-12 jpeg。對於所有質量-11或更低的jpeg,它是「image/jpeg」) – kapitel4

+1

然後我猜你不能正式支持那些圖像,如果圖像不符合標準,則不能期望能夠正確處理它們。如果我是你,我會考慮給我的用戶一個錯誤信息,其中可能的原因有一個是任意的12級質量。 – FMashiro

回答

1

重新創建圖像如果MIME類型是未知的:

$filesize = getimagesize($targetFile); 

if($filesize['mime'] == 'Unknown MIME type') 
{ 
    $image = imagecreatefromjpeg($targetFile); 
} 
+0

謝謝 - 這就是我終於做的......沒有想到這個選擇。 – kapitel4