《PHP獲取圖片類型最佳綜合函數(shù)》要點(diǎn):
本文介紹了PHP獲取圖片類型最佳綜合函數(shù),希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
相關(guān)主題:PHP開發(fā)
大家知道,以前,獲取PHP圖片類型,基本都是使用這個(gè)函數(shù)getimagesize()。但是在微信時(shí)代,對(duì)于微信圖片,采集過來的圖片,后綴是jpeg,實(shí)際是卻是webp,
這樣類型的圖片不能用getimagesize函數(shù)獲取圖片信息。那有什么其它辦法?
我們先來分析幾個(gè)獲取圖片的函數(shù):
1、finfo() 函數(shù),這個(gè)函數(shù)需要fileinfo擴(kuò)展。需要用fileinfo擴(kuò)展。一般會(huì)取得“image/webp; charset=binary”信息。需要注意的是,上面說的webp就可以用它來分析。但是因?yàn)樾枰獢U(kuò)展組件才可以,所以你的服務(wù)器不一定能支持。但PHP5.3以上可能都有安裝,所以還是挺普遍的。它的用法如:
$finfo = finfo_open(FILEINFO_MIME); $mimetype = finfo_file($finfo, $filename); finfo_close($finfo); #或用類的方式: $fi = new finfo(FILEINFO_MIME_TYPE); $mime_type = $fi->file($filename);
2、getimagesize函數(shù):這個(gè)就不說了吧,老古董了。返回圖片各種信息。
3、exif_imagetype(string filename)判斷一個(gè)圖像的類型,返回值和 getimagesize() 返回的數(shù)組中的索引 2 的值是一樣的,但本函數(shù)快得多。 但本函數(shù)需要打開Exif擴(kuò)展。不過,這個(gè)只是獲取類型,還需要轉(zhuǎn)化才能得到MIME。排除吧。
4、mime_content_type('a.jpg')函數(shù)判斷獲取mime類型,此函數(shù)已被丟棄,不能使用了。
5、使用自定義的函數(shù),其實(shí)是從一堆已有的MIME列表中選一個(gè)的方法。
上面每個(gè)都各有所長(zhǎng),我們就整合一起吧,目的是為了跨平臺(tái)應(yīng)用,不致于程序換個(gè)系統(tǒng)就掛了。所以,兼容性很重要。
下面通用函數(shù)中,VEPHP_RESOURCE是維易PHP站全局路徑常量,需要換成你自己的路徑。
/** * 獲取mime跨平臺(tái)函數(shù) * 來源:http://www.fzlkiss.com 維易學(xué)院, * 分享請(qǐng)保持網(wǎng)址。尊重別人勞動(dòng)成果。謝謝。 * * @param $filename 圖片名 */ function get_mime_type($filename) { if(class_exists('finfo')){ $fi = new finfo(FILEINFO_MIME_TYPE); $mime_type = $fi->file($filename); return $mime_type; } $fileext = strtolower(trim(strrchr($filename,'.'), '.')); if(in_array($fileext, ['jpg','jpeg','png','gif','bmp'])){ $picInfo = getimagesize($filename); return $picInfo['mime']; #return image_type_to_mime_type(exif_imagetype($filename)); } if (empty($fileext)) return false; $regex = "/^([\w\+\-\.\/]+)\s+(\w+\s)*($fileext\s)/i"; $lines = file(VEPHP_RESOURCE."dict/mime.types"); foreach($lines as $line) { if (substr($line, 0, 1) == '#') continue; $line = rtrim($line) . " "; if (!preg_match($regex, $line, $matches)) continue; return ($matches[1]); } return (false); // no match at all }
函數(shù)中用到的MIME文件下載地址:
http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/14.html