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 相关文章推荐
在IIS上安装PHP4.0正式版
Oct 09 PHP
PHP_MySQL教程-第一天
Mar 18 PHP
php图片验证码代码
Mar 27 PHP
PHP 多维数组排序实现代码
Aug 05 PHP
php输出xml格式字符串(用的这个)
Jul 12 PHP
set_include_path和get_include_path使用及注意事项
Feb 02 PHP
php伪静态之APACHE篇
Jun 02 PHP
php生成QRcode实例
Sep 22 PHP
PHP 实现代码复用的一个方法 traits新特性
Feb 22 PHP
最新最全PHP生成制作验证码代码详解(推荐)
Jun 12 PHP
实例讲解YII2中多表关联的使用方法
Jul 21 PHP
php 二维数组快速排序算法的实现代码
Oct 17 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
图书管理程序(三)
2006/10/09 PHP
dede3.1分页文字采集过滤规则详说(图文教程)续二
2007/04/03 PHP
表格展示无限级分类(PHP版)
2012/08/21 PHP
Yii框架登录流程分析
2014/12/03 PHP
PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤解析
2017/01/12 PHP
php中请求url的五种方法总结
2017/07/13 PHP
js点击更换背景颜色或图片的实例代码
2013/06/25 Javascript
js获取指定的cookie的具体实现
2014/02/20 Javascript
jQuery采用连缀写法实现的折叠菜单效果
2015/09/18 Javascript
Javascript复制实例详解
2016/01/28 Javascript
Angularjs---项目搭建图文教程
2016/07/08 Javascript
浅谈toLowerCase和toLocaleLowerCase的区别
2016/08/15 Javascript
jquery 输入框查找关键字并提亮颜色的实例代码
2018/01/23 jQuery
浅谈js获取ModelAndView值的问题
2018/03/28 Javascript
微信小程序项目实践之主页tab选项实现
2018/07/18 Javascript
JS插件amCharts实现绘制柱形图默认显示数值功能示例
2019/11/26 Javascript
Python pickle模块用法实例
2015/04/14 Python
Python抓取框架 Scrapy的架构
2016/08/12 Python
Python正则表达式如何进行字符串替换实例
2016/12/28 Python
对Python3 goto 语句的使用方法详解
2019/02/16 Python
Python动态语言与鸭子类型详解
2019/07/01 Python
python利用itertools生成密码字典并多线程撞库破解rar密码
2019/08/12 Python
Pytorch释放显存占用方式
2020/01/13 Python
解析浏览器的一些“滚动”行为鉴赏
2019/09/16 HTML / CSS
ProBikeKit澳大利亚:自行车套件,跑步和铁人三项装备
2016/11/30 全球购物
TripAdvisor印尼站:全球领先的旅游网站
2018/03/15 全球购物
Yankee Candle官网:美国最畅销蜡烛品牌之一
2020/01/05 全球购物
PHP面试题附答案
2015/11/28 面试题
介绍一下Linux内核的排队自旋锁
2014/08/27 面试题
shell程序如何生命变量?shell变量是弱变量吗?
2014/11/10 面试题
金融管理应届生求职信
2014/02/20 职场文书
银行委托书范本
2014/04/04 职场文书
班级学习计划书
2014/04/27 职场文书
小区保洁员岗位职责
2015/04/10 职场文书
python 统计代码耗时的几种方法分享
2021/04/02 Python
JavaScript实现两个数组的交集
2022/03/25 Javascript