2012-03-03 87 views
3

如果可以檢查圖像的類型是否從.png更改爲.jpg檢查圖像類型如果從.png重命名爲.jpg

我需要這個,因爲當我使用調整大小功能我的網站停止,如果上傳的圖片是從png格式以JPG格式更名工作(我做了我的代碼只接受.jpg圖像)

+0

您使用的重新調整過程是什麼。你應該看看它,看看它如何保存調整大小的圖像,並強制它是'.jpg' – Henesnarfel 2012-03-03 15:07:27

回答

10

getimagesize將包含信息關於圖像類型:

$info = getimagesize('file.png'); 
if($info[2] == IMAGETYPE_JPEG){ 

} 
+0

這工作,很容易:)謝謝。 – John 2012-03-03 15:20:39

2

你可以總是讀出的圖像類型使用,以檢查圖像exif_imagetype()

$image_type = exif_imagetype($filename); 

實施例:

<?php 
if (exif_imagetype('image.gif') != IMAGETYPE_GIF) { 
    echo 'The picture is not a gif'; 
} 
?> 
10

magic number每巴紐開始與這些字節:

89 50 4E 47 0D 0A 1A 0A 

他們是PNG簽名。如果.jpg以這些字節開頭,則不是jpg。

2

是的,你可以使用這個

if($_FILES["imagefile"]["type"] == "image/jpeg") 
{ 

return true; 

} 

else if($_FILES["imagefile"]["type"] == "image/png") 

{ 

return false; 

} 

或者你應該使用這個mime_content_type是更可靠的,因爲$_FILES["imagefile"]["type"]可以從客戶端僞造。 ..

+0

謝謝,但我已經嘗試過了。 renamte .png圖片的圖片類型是「Image/jpeg」 – John 2012-03-03 15:15:41

+0

您是否嘗試了mime_content_type這個函數? – 2012-03-03 15:33:17

2

你需要知道的不是文件的歷史,而是它的真實格式。您可以通過檢查文件的內容來做到這一點:JPG文件應該以字節FF D8開始並以FF D9結束。 PNG文件以不同的簽名開始:\ 211 P N G \ r \ n \ 032 \ n(十六進制:89 50 4E 47 0D 0A 1A 0A)。

看到這個網站了解更多信息: http://en.wikipedia.org/wiki/Magic_number_%28programming%29

0

嘗試file命令。

unknownimage是一個JPG圖片:

$ file unknownimage 
unknownimage: JPEG image data, baseline, precision 8, 400x400, frames 3 

unknownimage文件是一個PNG圖像:

$ file unknownimage 
unknownimage: PNG image data, 779 x 701, 8-bit/color RGBA, non-interlaced 
相關問題