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性能优化 产生高度优化代码
Jul 22 PHP
PHP set_error_handler()函数使用详解(示例)
Nov 12 PHP
利用phpexcel把excel导入数据库和数据库导出excel实现
Jan 09 PHP
php+js实现异步图片上传实例分享
Jun 02 PHP
2个比较经典的PHP加密解密函数分享
Jul 01 PHP
新浪微博OAuth认证和储存的主要过程详解
Mar 27 PHP
Apache PHP MySql安装配置图文教程
Aug 27 PHP
老生常谈PHP 文件写入和读取(必看篇)
May 22 PHP
PHP将数据导出Excel表中的实例(投机型)
Jul 31 PHP
Laravel 实现密码重置功能
Feb 23 PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
May 08 PHP
Yii使用EasyWechat实现小程序获取用户的openID的方法
Apr 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
php+mysql实现无限级分类 | 树型显示分类关系
2006/11/19 PHP
PHP+jQuery 注册模块开发详解
2014/10/14 PHP
php cookie中点号(句号)自动转为下划线问题
2014/10/21 PHP
详解WordPress开发中wp_title()函数的用法
2016/01/07 PHP
JQuery中getJSON的使用方法
2010/12/13 Javascript
关于COOKIE个数与大小的问题
2011/01/17 Javascript
JS图片无缝、平滑滚动代码
2014/03/11 Javascript
js获取json元素数量的方法
2015/01/27 Javascript
jQuery选择器之基本选择器与层次选择器
2015/03/03 Javascript
JavaScript在浏览器标题栏上显示当前日期和时间的方法
2015/03/19 Javascript
jQuery实现文本框邮箱输入自动补全效果
2015/11/17 Javascript
js实现文字闪烁特效的方法
2015/12/17 Javascript
jQuery事件委托之Safari
2016/07/05 Javascript
关于JavaScript 原型链的一点个人理解
2016/07/31 Javascript
微信小程序 摇一摇抽奖简单实例实现代码
2017/01/09 Javascript
微信小程序 自定义对话框实例详解
2017/01/20 Javascript
JavaScript获取移动设备型号的实现代码(JS获取手机型号和系统)
2018/03/10 Javascript
react-native滑动吸顶效果的实现过程
2019/06/03 Javascript
Javascript实现单选框效果
2020/12/09 Javascript
python抓取网页中链接的静态图片
2018/01/29 Python
python 美化输出信息的实例
2018/10/15 Python
python通过robert、sobel、Laplace算子实现图像边缘提取详解
2019/08/21 Python
解决django接口无法通过ip进行访问的问题
2020/03/27 Python
Python实现一个简单的毕业生信息管理系统的示例代码
2020/06/08 Python
Python+Opencv实现把图片、视频互转的示例
2020/12/17 Python
世界上最大的高分辨率在线图片库:Alamy
2018/07/07 全球购物
Charlotte Tilbury澳大利亚官网:英国美妆品牌
2018/10/05 全球购物
世界上最全面的草药补充剂和顶级品牌维生素网站:HerbsPro
2019/01/20 全球购物
师范学院美术系毕业生自我鉴定
2014/01/29 职场文书
卖房协议书
2014/04/11 职场文书
《秋游》教学反思
2014/04/24 职场文书
教师作风建设剖析材料
2014/10/11 职场文书
2014年酒店工作总结范文
2014/11/17 职场文书
2015年秋学期师德师风建设工作总结
2015/10/23 职场文书
小学英语教学经验交流材料
2015/11/02 职场文书
涨工资申请书应该怎么写?
2019/07/08 职场文书