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是脚本之家PHP站全局路径常量,需要换成你自己的路径。 /**
 * 获取mime跨平台函数
 * 来源:http://www.jb51.cc  脚本之家学院,
 * 分享请保持网址。尊重别人劳动成果。谢谢。 *
 * @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)*($fileexts)/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
}函数中用到的MIME文件下载地址: http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types (编辑:莱芜站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!  | 
                  
