PHP判断图片格式的七种方法小结


Posted in PHP onJune 03, 2013

使用php判断文件图片的格式

<?php 
$imgurl = "https://3water.com/images/logo.gif"; 
//方法1 
echo $ext = strrchr($imgurl,'.'); 
echo '<hr>'; 
//方法2 
echo $ext1 = substr($imgurl,strrpos($imgurl, '.')); 
echo '<hr>'; 
//方法3 
echo(@end(explode(".",$imgurl))); 
echo '<hr>'; 
//方法4 
echo pathinfo($imgurl,PATHINFO_EXTENSION); 
print_r(pathinfo($imgurl)); 
echo '<hr>'; 
//方法5 
$imginfo= getimagesize($imgurl); 
print_r($imginfo); 
echo end($imginfo); 
echo '<hr>'; 
//方法6 
$imghttp = get_headers($imgurl,true); 
print_r($imghttp); 
echo '<hr>'; 
//方法7 
echo exif_imagetype($imgurl);

测试结果:

PHP判断图片格式的七种方法小结

方法分析:

第一种思想方法就是把图片路径当作字符串来处理,那么判断图片格式的也就是变成了查找.号的字符串。

方法1:使用strrchr
strrchr() 函数查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符。

如果成失败,否则返回 false。备注:该函数是二进制安全的。

方法2:strrpos
strrpos() 函数查找字符串在另一个字符串中最后一次出现的位置。

如果成功,则返回位置,否则返回 false。

注释:该函数对大小写敏感。如需进行大小写不敏感的查找,请使用 strripos()。

先计算.号的位置,在使用substr截取字符串

方法3:explode把字符串分割成数组,取数组最后一个键值
———————————————————————?

第二种思想,把图片路径当作文件路径,那么这里就需要gd类库函数或者php文件函数

方法4:使用pathinfo()
pathinfo(path,options)函数以数组的形式返回文件路径的信息

包括以下的数组元素:

[dirname]
[basename]
[extension]
options参数:

可选。规定要返回的数组元素。默认是 all。

可能的值:

PATHINFO_DIRNAME ? 只返回 dirname
PATHINFO_BASENAME ? 只返回 basename
PATHINFO_EXTENSION ? 只返回 extension
方式5:getimagesize获取图片大小格式的方式,这个不是gd类库函数
这个方法很经典,不仅可以用来判断图片格式还可以获得图片长宽信息

方法6:get_headers获取http报头信息
如果图片路径是一个标准的url路径,那么可以使用get_header函数,这个函数可以返回http报

头,另外这个方法也可以判断图片文件url是否是一个有效的url,使用方法参考:《PHP判断远程url是否有效的几种方法》

方法7:使用gd类库函数
exif_imagetype() 读取一个图像的第一个字节并检查其签名。

如果发现了恰当的签名则返回一个对应的常量,否则返回 FALSE。返回值和 getimagesize() 返回的数组中的索引 2 的值是一样的,但本函数快得多。

返回的常量值:对应的值,如例子返回1,对应的是gif格式图片。

PHP判断图片格式的七种方法小结

综合评价
目前比较主流使用的方法是方法1,如果考虑安全问题的话可以使用方法5,因为方法5可以判断这个文件是否为图像文件(可以避免有人把非法程序伪造成图片文件).

PHP 相关文章推荐
PHP+MySQL5.0中文乱码解决方法
Nov 20 PHP
深入理解PHP原理之异常机制
Aug 21 PHP
简单的移动设备检测PHP脚本代码
Feb 19 PHP
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
Jun 24 PHP
php 购物车完整实现代码
Jun 05 PHP
详解Yii2 定制表单输入字段的标签和样式
Jan 04 PHP
php创建图像具体步骤
Mar 13 PHP
php表单文件iframe异步上传实例讲解
Jul 26 PHP
PHP实现的二分查找算法实例分析
Dec 19 PHP
Laravel框架模板加载,分配变量及简单路由功能示例
Jun 11 PHP
PHP里的$_GET数组介绍
Mar 22 PHP
ThinkPHP 5 AJAX跨域请求头设置实现过程解析
Oct 28 PHP
基于session_unset与session_destroy的区别详解
Jun 03 #PHP
PHP批量采集下载美女图片的实现代码
Jun 03 #PHP
基于PHP CURL获取邮箱地址的详解
Jun 03 #PHP
解析CI即CodeIgniter框架在Nginx下的重写规则
Jun 03 #PHP
深入php函数file_get_contents超时处理的方法详解
Jun 03 #PHP
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file
Jun 03 #PHP
PHP CLI模式下的多进程应用分析
Jun 03 #PHP
You might like
php的一个登录的类 [推荐]
2007/03/16 PHP
symfony表单与页面实现技巧
2015/01/26 PHP
php模拟服务器实现autoindex效果的方法
2015/03/10 PHP
php写入数据到CSV文件的方法
2015/03/14 PHP
PHP实现简单实用的验证码类
2015/07/29 PHP
由php中字符offset特征造成的绕过漏洞详解
2017/07/07 PHP
基于Jquery的表格隔行换色,移动换色,点击换色插件
2010/12/22 Javascript
jquery.combobox中文api和例子,修复了上面的小bug
2011/03/28 Javascript
jQuery移除tr无效的解决方法(tr是动态添加)
2014/09/22 Javascript
利用jquery操作Radio方法小结
2014/10/20 Javascript
基于JavaScript代码实现微信扫一扫下载APP
2015/12/30 Javascript
ichart.js绘制虚线、平均分虚线效果的实现代码
2016/05/05 Javascript
AngularJS基础 ng-selected 指令简单示例
2016/08/03 Javascript
在线引用最新jquery文件的实现方法
2016/08/26 Javascript
利用Angularjs和bootstrap实现购物车功能
2016/08/31 Javascript
JavaScript ES6中CLASS的使用详解
2016/11/22 Javascript
微信小程序 require机制详解及实例代码
2016/12/14 Javascript
JS实现身份证输入框的输入效果
2017/08/21 Javascript
原生JS实现小小的音乐播放器
2017/10/16 Javascript
浅谈如何通过node.js对数据进行MD5加密
2018/05/16 Javascript
使用js实现将后台传入的json数据放在前台显示
2018/08/06 Javascript
vuex入门最详细整理
2020/03/04 Javascript
浅谈js中的attributes和Attribute的用法与区别
2020/07/16 Javascript
[01:15:00]LGD vs Mineski Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
在服务器端实现无间断部署Python应用的教程
2015/04/16 Python
python kafka 多线程消费者&amp;手动提交实例
2019/12/21 Python
pytorch 常用线性函数详解
2020/01/15 Python
无需压缩软件,用python帮你操作压缩包
2020/08/17 Python
Python3使用tesserocr识别字母数字验证码的实现
2021/01/29 Python
CSS3制作轮播图的一种方法
2019/11/11 HTML / CSS
国际性能运动服装品牌:Dare 2b
2018/07/27 全球购物
区域总监的岗位职责
2013/11/21 职场文书
我们的节日清明节活动总结
2014/04/30 职场文书
医院办公室主任岗位职责
2015/04/01 职场文书
《丑小鸭》教学反思
2016/02/19 职场文书
浅析Python中的随机采样和概率分布
2021/12/06 Python