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设计模式 Chain Of Responsibility (职责链模式)
Jun 26 PHP
php4与php5的区别小结(配置异同)
Dec 20 PHP
叫你如何修改Nginx与PHP的文件上传大小限制
Sep 10 PHP
PHP答题类应用接口实例
Feb 09 PHP
详解WordPress中简码格式标签编写的基本方法
Dec 22 PHP
php pdo oracle中文乱码的快速解决方法
May 16 PHP
Netbeans 8.2与PHP相关的新特性介绍
Oct 08 PHP
PHP二维数组去重实例分析
Nov 18 PHP
PHP简单实现冒泡排序的方法
Dec 26 PHP
PHP多进程编程之僵尸进程问题的理解
Oct 15 PHP
YII框架常用技巧总结
Apr 27 PHP
php 的多进程操作实践案例分析
Feb 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
pw的一个放后门的方法分析
2007/10/08 PHP
php ctype函数中文翻译和示例
2014/03/21 PHP
ThinkPHP的截取字符串函数无法显示省略号的解决方法
2014/06/25 PHP
php+ajax实现无刷新分页的方法
2014/11/04 PHP
php-fpm服务启动脚本的方法
2018/04/27 PHP
Thinkphp5框架简单实现钩子(Hook)行为的方法示例
2019/09/03 PHP
jQuery 取值、赋值的基本方法整理
2014/03/31 Javascript
Jquery对象和Dom对象的区别分析
2014/11/20 Javascript
JS实现进入页面时渐变背景色的方法
2015/02/25 Javascript
JavaScript在Android的WebView中parseInt函数转换不正确问题解决方法
2015/04/25 Javascript
Bootstrap多级菜单的实现代码
2017/05/23 Javascript
jQuery实现表格冻结顶栏效果
2017/08/20 jQuery
vue项目如何刷新当前页面的方法
2018/05/18 Javascript
jQuery实现图片简单轮播功能示例
2018/08/13 jQuery
React+Antd+Redux实现待办事件的方法
2019/03/14 Javascript
详解如何在JS代码中消灭for循环
2019/12/11 Javascript
使用django-suit为django 1.7 admin后台添加模板
2014/11/18 Python
python制作小说爬虫实录
2017/08/14 Python
Python2中文处理纪要的实现方法
2018/03/10 Python
Python3实现腾讯云OCR识别
2018/11/27 Python
tensorflow使用指定gpu的方法
2020/02/04 Python
Python库skimage绘制二值图像代码实例
2020/04/10 Python
CSS3按钮鼠标悬浮实现光圈效果源码
2016/09/11 HTML / CSS
鲜为人知的HTML5语音合成功能
2019/05/17 HTML / CSS
美国眼镜网站:EyeBuyDirect
2017/04/13 全球购物
世界上最大的售后摩托车零配件超市:J&P Cycles
2017/12/08 全球购物
次世代生活态度:Hypebeast
2018/07/05 全球购物
Myholidays美国:在线旅游网站
2019/08/16 全球购物
英国在线定制百叶窗网站:Swift Direct Blinds
2020/02/25 全球购物
NFL官方在线商店:NFLShop
2020/07/29 全球购物
明信片寄语大全
2014/04/08 职场文书
经验交流材料格式
2014/12/30 职场文书
建筑技术负责人岗位职责
2015/04/13 职场文书
教师节领导致辞
2015/07/29 职场文书
《角的初步认识》教学反思
2016/02/17 职场文书
ThinkPHP5和ThinkPHP6的区别
2021/03/31 PHP