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 相关文章推荐
搜索和替换文件或目录的一个好类--很实用
Oct 09 PHP
第七节--类的静态成员
Nov 16 PHP
php中iconv函数使用方法
May 24 PHP
php 计算两个时间戳相隔的时间的函数(小时)
Dec 18 PHP
zf框架的数据库追踪器使用示例
Mar 13 PHP
一组PHP加密解密函数分享
Jun 05 PHP
php防止站外远程提交表单的方法
Oct 20 PHP
PHP简单获取多个checkbox值的方法
Jun 13 PHP
微信公众号判断用户是否已关注php代码解析
Jun 24 PHP
Yii中CGridView禁止列排序的设置方法
Jul 12 PHP
php实现贪吃蛇小游戏
Jul 26 PHP
PHP实现Redis单据锁以及防止并发重复写入
Apr 10 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+mysqli事务控制实现银行转账实例
2015/01/29 PHP
yii2.0实现pathinfo的形式访问的配置方法
2016/04/06 PHP
PHP面向对象程序设计方法实例详解
2016/12/24 PHP
jquery ajax执行后台方法
2010/03/18 Javascript
JavaScript Perfection kill 测试及答案
2010/03/23 Javascript
Javascript中的this绑定介绍
2011/09/22 Javascript
Javascript Request获取请求参数如何实现
2012/11/28 Javascript
屏蔽网页右键复制和ctrl+c复制的js代码
2013/01/04 Javascript
利用js实现选项卡的特别效果的实例
2013/03/03 Javascript
js兼容火狐获取图片宽和高的方法
2015/05/21 Javascript
浅析Javascript中bind()方法的使用与实现
2016/04/29 Javascript
JS实现pasteHTML兼容ie,firefox,chrome的方法
2016/06/22 Javascript
Angular2 (RC4) 路由与导航详解
2016/09/21 Javascript
JavaScript 随机验证码的生成实例代码
2016/09/22 Javascript
js中scrollTop()方法和scroll()方法用法示例
2016/10/03 Javascript
Vue.set()实现数据动态响应的方法
2018/02/07 Javascript
Angular 4.x+Ionic3踩坑之Ionic 3.x界面传值详解
2018/03/13 Javascript
jQuery实现获取当前鼠标位置并输出功能示例
2019/01/05 jQuery
javascriptvoid(0)含义以及与&quot;#&quot;的区别讲解
2019/01/19 Javascript
深入解析vue 源码目录及构建过程分析
2019/04/24 Javascript
微信小程序左滑删除实现代码实例
2019/09/16 Javascript
vue总线机制(bus)知识点详解
2020/05/10 Javascript
Vue 封装防刷新考试倒计时组件的实现
2020/06/05 Javascript
jQuery实现增删改查
2020/12/22 jQuery
python计算圆周率pi的方法
2015/07/11 Python
Python使用内置json模块解析json格式数据的方法
2017/07/20 Python
python使用 HTMLTestRunner.py生成测试报告
2017/10/20 Python
python with提前退出遇到的坑与解决方案
2018/01/05 Python
Python基于更相减损术实现求解最大公约数的方法
2018/04/04 Python
实例详解python函数的对象、函数嵌套、名称空间和作用域
2019/05/31 Python
详解Python 中的容器 collections
2020/08/17 Python
python tkinter实现连连看游戏
2020/11/16 Python
免费获得微软MCSD证书赶快行动吧!
2012/11/13 HTML / CSS
凯撒娱乐:Caesars Entertainment
2018/02/23 全球购物
平面设计专业求职信
2014/08/09 职场文书
报到证办理个人委托书
2014/10/06 职场文书