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中simplexml_load_string使用实例分享
Feb 13 PHP
PHP实现数组递归转义的方法
Aug 28 PHP
smarty中js的调用方法示例
Oct 27 PHP
PHP中定义数组常量(array常量)的方法
Nov 17 PHP
php中实现用数组妩媚地生成要执行的sql语句
Jul 10 PHP
PHP实现XML与数据格式进行转换类实例
Jul 29 PHP
使用PHP uniqid函数生成唯一ID
Nov 18 PHP
Zend Framework实现Zend_View集成Smarty模板系统的方法
Mar 05 PHP
PHP线程的内存回收问题
Jul 08 PHP
php获取给定日期相差天数的方法分析
Feb 20 PHP
详解php curl带有csrf-token验证模拟提交方法
Apr 18 PHP
PHP接入微信H5支付的方法示例
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
关于我转生变成史莱姆这档事:第二季PV上线,萌王2021年回归
2020/05/06 日漫
php获取网站百度快照日期的方法
2015/07/29 PHP
PHP 自动加载的简单实现(推荐)
2016/08/12 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
javascript 匿名函数的理解(透彻版)
2010/01/28 Javascript
Jquery拖拽并简单保存的实现代码
2010/11/28 Javascript
javascript题目,重写函数让其无限相加
2012/02/15 Javascript
jQuery遍历Table应用示例
2014/04/09 Javascript
JavaScript使用二分查找算法在数组中查找数据的方法
2015/04/07 Javascript
详解JavaScript中的异常处理方法
2015/06/16 Javascript
整理Javascript流程控制语句学习笔记
2015/11/29 Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
2016/08/29 Javascript
通过bootstrap全面学习less
2016/11/09 Javascript
bootstrap导航条实现代码
2016/12/28 Javascript
Html5+jQuery+CSS制作相册小记录
2016/12/30 Javascript
validationEngine 表单验证插件使用实例代码
2017/06/15 Javascript
微信小程序实现点击返回顶层的方法
2017/07/12 Javascript
Vue 使用中的小技巧
2018/04/26 Javascript
vue中eslintrc.js配置最详细介绍
2018/12/21 Javascript
优化Vue中date format的性能详解
2020/01/13 Javascript
如何使用RoughViz可视化Vue.js中的草绘图表
2021/01/30 Vue.js
python解析xml文件实例分析
2015/05/27 Python
Django框架中数据的连锁查询和限制返回数据的方法
2015/07/17 Python
python 读写、创建 文件的方法(必看)
2016/09/12 Python
Python WXPY实现微信监控报警功能的代码
2017/10/20 Python
python中文分词教程之前向最大正向匹配算法详解
2017/11/02 Python
Django 跨域请求处理的示例代码
2018/05/02 Python
Django csrf 验证问题的实现
2018/10/09 Python
python 实现得到当前时间偏移day天后的日期方法
2018/12/31 Python
使用python实现数组、链表、队列、栈的方法
2019/12/20 Python
解释下面关于J2EE的名词
2013/11/15 面试题
会计自我鉴定
2013/11/02 职场文书
银行开业庆典方案
2014/02/06 职场文书
群众路线学习笔记范文
2014/11/06 职场文书
2014年检察院个人工作总结
2014/12/09 职场文书
史上最全书信经典范文大全(建议收藏)
2019/07/10 职场文书