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 移除数组重复元素的一点说明
Nov 27 PHP
php循环语句 for()与foreach()用法区别介绍
Sep 05 PHP
PHP OPP机制和模式简介(抽象类、接口和契约式编程)
Jun 09 PHP
PHP移动文件指针ftell()、fseek()、rewind()函数总结
Nov 18 PHP
php获取文章上一页与下一页的方法
Dec 01 PHP
在Linux系统的服务器上隐藏PHP版本号的方法
Jun 06 PHP
php实现的日历程序
Jun 18 PHP
PHP中SERIALIZE和JSON的序列化与反序列化操作区别分析
Oct 11 PHP
PHP实现在数据库百万条数据中随机获取20条记录的方法
Apr 19 PHP
详解php框架Yaf路由重写
Jun 20 PHP
php支付宝APP支付功能
Jul 29 PHP
php实现分页功能的详细实例方法
Sep 29 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
盘点被央视点名过的日本动画电影 一部比一部强
2020/03/08 日漫
php中几种常见安全设置详解
2010/04/06 PHP
php include加载文件两种方式效率比较
2010/08/08 PHP
PHP中使用memcache存储session的三种配置方法
2014/04/05 PHP
php上传图片类及用法示例
2016/05/11 PHP
Laravel中GraphQL接口请求频率实战记录
2020/09/01 PHP
jQuery操作Select选择的Text和Value(获取/设置/添加/删除)
2013/03/06 Javascript
jquery做的一个简单的屏幕锁定提示框
2014/03/26 Javascript
JS常见问题之为什么点击弹出的i总是最后一个
2016/01/05 Javascript
JavaScript正则表达式替换字符串中图片地址(img src)的方法
2017/01/13 Javascript
bootstrap datetimepicker日期插件使用方法
2017/01/13 Javascript
Ajax跨域实现代码(后台jsp)
2017/01/21 Javascript
微信小程序数据统计和错误统计的实现方法
2019/06/26 Javascript
vue实现分页栏效果
2019/06/28 Javascript
VSCode Vue开发推荐插件和VSCode快捷键(小结)
2020/08/08 Javascript
简单谈谈python的反射机制
2016/06/28 Python
Python实现SSH远程登陆,并执行命令的方法(分享)
2017/05/08 Python
Python的地形三维可视化Matplotlib和gdal使用实例
2017/12/09 Python
Python GUI布局尺寸适配方法
2018/10/11 Python
python3实现指定目录下文件sha256及文件大小统计
2019/02/25 Python
python版百度语音识别功能
2019/07/09 Python
Pytorch中Tensor与各种图像格式的相互转化详解
2019/12/26 Python
Linux安装Python3如何和系统自带的Python2并存
2020/07/23 Python
python 还原梯度下降算法实现一维线性回归
2020/10/22 Python
英国最大的化装舞会服装网站:Fancydress.com
2017/08/15 全球购物
New Balance法国官方网站:购买鞋子和服装
2019/09/01 全球购物
物理专业本科生自荐信
2014/01/30 职场文书
军训考核自我鉴定
2014/02/13 职场文书
物流管理毕业生自荐信范文
2014/03/15 职场文书
2014年社区党建工作汇报材料
2014/11/02 职场文书
温馨祝福晨语:美丽的一天从我的问候开始
2019/11/28 职场文书
python 调用js的四种方式
2021/04/11 Python
css3实现背景图片半透明内容不透明的方法示例
2021/04/13 HTML / CSS
你真的了解PHP中的引用符号(&)吗
2021/05/12 PHP
SQL之各种join小结详细讲解
2021/08/04 MySQL
ConditionalOnProperty配置swagger不生效问题及解决
2022/06/14 Java/Android