回答
該位開始:
$JPEG = "\xFF\xD8\xFF"
$GIF = "GIF"
$PNG = "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a"
$BMP = "BM"
$PSD = "8BPS"
$SWF = "FWS"
其他的人,現在我不知道,但大3(JPEG,GIF,PNG),通常覆蓋99%。因此,將第一個字節與這些字符串進行比較,然後獲得答案。
正在上傳的文件,或者是他們已經在文件系統上?
嘗試使用mime_content_type()
來獲取文件的MIME格式。
爲什麼不檢查文件entension? :)
另類
if(exif_imagetype($filepath) == IMAGETYPE_JPEG){
echo 'This is a JPEG image';
}
絕對不可靠的。 – Maerlyn 2010-07-22 20:06:52
因此,大部分GIF文件實際上並不是GIF文件?除非你處理用戶上傳,否則沒有理由不起作用,即使這樣你也沒有什麼可擔心的。 – Dutchie432 2010-07-22 20:13:59
2012年,一些用戶認爲只需重命名文件即可轉換圖像...因此,這不可靠。 – djleop 2012-10-09 13:14:00
這裏是由Wrikken
function getImgType($filename) {
$handle = @fopen($filename, 'r');
if (!$handle)
throw new Exception('File Open Error');
$types = array('jpeg' => "\xFF\xD8\xFF", 'gif' => 'GIF', 'png' => "\x89\x50\x4e\x47\x0d\x0a", 'bmp' => 'BM', 'psd' => '8BPS', 'swf' => 'FWS');
$bytes = fgets($handle, 8);
$found = 'other';
foreach ($types as $type => $header) {
if (strpos($bytes, $header) === 0) {
$found = $type;
break;
}
}
fclose($handle);
return $found;
}
使用FileInfo的PHP擴展所描述的功能的實現:
http://de.php.net/manual/en/function.finfo-file.php
其使用 「文件」 * nix的命令可靠地確定MIME給定文件的類型:
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mimetype = finfo_file($finfo, $filename);
finfo_close($finfo);
此擴展與PHP 5.3一起提供,或者可以從pecl(pecl install fileinfo)爲早期版本安裝。
http://php.net/manual/en/function.getimagesize.php
「索引2是表示圖像的種類的IMAGETYPE_XXX常數之一。」
- 1. php圖像類型檢測
- 2. 檢查圖像類型在php
- 3. 檢查圖像類型和壓縮沒有圖像Magick
- 4. 檢查圖像文件類型
- 5. 我如何檢查圖像的類型?
- 6. PHP:圖像檢查擴展
- 7. PHP Str_replace圖像類型
- 8. php gd圖像類型
- 9. 獲取圖像類型,PHP
- 10. 通過SQL查詢/ C++插入'圖像'數據類型值
- 11. 二值圖像中的對象檢測
- 12. 圖像數據庫中的圖像類型
- 13. 其中mySQLi圖像數據類型用於圖像
- 14. 液體像素檢查源圖像MIME類型
- 15. 查找白色/黑色像素數在二值圖像
- 16. 檢查圖像實際上是一個圖像php
- 17. Java獲取圖像,檢查MIME類型,轉換爲PNG,並返回該圖像
- 18. 查找二進制重複記錄SQL Server 2008(數據類型圖像)
- 19. 保存數值二維數組圖像
- 20. 在php中獲取遠程圖像的圖像類型
- 21. 圖像類型頭
- 22. php圖像數據庫blob
- 23. 文檔圖像二值化
- 24. Web2py類型錯誤檢索圖像
- 25. 從二進制數據圖像的GridView圖像庫
- 26. 檢查圖像是否存在php
- 27. 使用PHP存儲圖像數據類型
- 28. VarBinary與圖像SQL Server數據類型存儲二進制數據?
- 29. PHP:圖像類型不被識別
- 30. PHP圖像內容類型問題
你可以舉一個例子,你將如何檢查這些使用PHP的一些二進制數據?感謝 – DonutReply 2011-05-10 16:44:54
@DonutReply - 只爲人們尋找它:https://gist.github.com/CodeBrauer/5fe9ad14fa9786b3d1f6 – CodeBrauer 2015-03-27 14:00:06
你想過最後位找出圖像結束的任何信息? – Daniel 2017-10-06 14:58:45