脚本宝典收集整理的这篇文章主要介绍了PHP获取图片类型最佳综合函数,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
《PHP获取图片类型最佳综合函数》要点:
本文介绍了PHP获取图片类型最佳综合函数,希望对您有用。如果有疑问,可以联系我们。
大家知道,以前,获取PHP图片类型,基本都是使用这个函数getimagesize()。但是在微信时代,对于微信图片,采集过来的图片,后缀是jPEg,实际是却是webp,
这样类型的图片不能用getimagesize函数获取图片信息。那有什么其它办法?
1、finfo() 函数,这个函数需要fileinfo扩展。需要用fileinfo扩展。一般会取得“image/webp; charset=binary”信息。需要注意的是,上面说的webp就可以用它来分析。但是因为需要扩展组件才可以,所以你的服务器不一定能支持。但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函数:这个就不说了吧,老古董了。返回图片各种信息。
3、exif_imagetype(string filename)判断一个图像的类型,返回值和 getimagesize() 返回的数组中的索引 2 的值是一样的,但本函数快得多。 但本函数需要打开Exif扩展。不过,这个只是获取类型,还需要转化才能得到MIME。排除吧。
4、mime_content_type('a.jpg')函数判断获取MIME类型,此函数已被丢弃,不能使用了。
5、使用自定义的函数,其实是从一堆已有的MIME列表中选一个的方法。
上面每个都各有所长,我们就整合一起吧,目的是为了跨平台应用,不致于程序换个系统就挂了。所以,兼容性很重要。
下面通用函数中,VEPHP_RESOURCE是编程之家站全局路径常量,需要换成你自己的路径。
/** * 获取mime跨平台函数 * 来源:http://www.js-code.COM 编程之家学院, * 分享请保持网址。尊重别人劳动成果。谢谢。 * * @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 }
http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types
以上是脚本宝典为你收集整理的PHP获取图片类型最佳综合函数全部内容,希望文章能够帮你解决PHP获取图片类型最佳综合函数所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。