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 相关文章推荐
Smarty模板快速入门
Jan 04 PHP
php mssql 数据库分页SQL语句
Dec 16 PHP
php 分页原理详解
Aug 21 PHP
PHP下对数组进行排序的函数
Aug 08 PHP
PHP导出MySQL数据到Excel文件(fputcsv)
Jul 03 PHP
ThinkPHP模板引擎之导入资源文件方法详解
Jun 18 PHP
PHP判断来访是搜索引擎蜘蛛还是普通用户的代码小结
Sep 14 PHP
最新制作ThinkPHP3.2.3完全开发手册
Nov 23 PHP
解决出现SoapFault (looks like we got no XML document)的问题
Jun 24 PHP
TP5.0框架实现无限极回复功能的方法分析
May 04 PHP
PHP简单实现图片格式转换(jpg转png,gif转png等)
Oct 30 PHP
PHP 文件写入和读取操作实例详解【必看篇】
Nov 04 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操作数组的一些函数整理介绍
2011/07/17 PHP
简单介绍win7下搭建apache+php+mysql开发环境
2015/08/06 PHP
基于PHP生成简单的验证码
2016/06/01 PHP
在 PHP 和 Laravel 中使用 Traits的方法
2019/11/13 PHP
xmlHTTP实例
2006/10/24 Javascript
深入理解JavaScript系列(4) 立即调用的函数表达式
2012/01/15 Javascript
jquery操作复选框(checkbox)的12个小技巧总结
2014/02/04 Javascript
JavaScript 实现简单的倒计时弹窗DEMO附图
2014/03/05 Javascript
javascript实现详细时间提醒信息效果的方法
2015/03/11 Javascript
仿百度换肤功能的简单实例代码
2016/07/11 Javascript
利用JavaScript实现拖拽改变元素大小
2016/12/14 Javascript
Vue.js中数据绑定的语法教程
2017/06/02 Javascript
JavaScript字符串_动力节点Java学院整理
2017/06/27 Javascript
利用node.js爬取指定排名网站的JS引用库详解
2017/07/25 Javascript
BootStrap模态框不垂直居中的解决方法
2017/10/19 Javascript
JavaScript 隐性类型转换步骤浅析
2018/03/15 Javascript
VUE+Element UI实现简单的表格行内编辑效果的示例的代码
2018/10/31 Javascript
vue 实现v-for循环回来的数据动态绑定id
2019/11/07 Javascript
JavaScript图片旋转效果实现方法详解
2020/06/28 Javascript
使用eslint和githooks统一前端风格的技巧
2020/07/29 Javascript
关于JavaScript中异步/等待的用法与理解
2020/11/18 Javascript
[57:29]Alliance vs KG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/17 DOTA
Python实现国外赌场热门游戏Craps(双骰子)
2015/03/31 Python
python 写的一个爬虫程序源码
2016/02/28 Python
Python+树莓派+YOLO打造一款人工智能照相机
2018/01/02 Python
python代码打印100-999之间的回文数示例
2019/11/24 Python
python中round函数如何使用
2020/06/19 Python
python3实现将json对象存入Redis以及数据的导入导出
2020/07/16 Python
Nobody Denim官网:购买高级女士牛仔裤
2021/03/15 全球购物
阿里巴巴Oracle DBA笔试题答案-备份恢复类
2013/11/20 面试题
求职信格式范本
2013/11/15 职场文书
生物专业个人自荐信范文
2013/11/29 职场文书
研究生毕业鉴定
2014/01/29 职场文书
《诺贝尔》教学反思
2014/02/17 职场文书
中英文求职信范文
2015/03/19 职场文书
JavaScript 对象创建的3种方法
2021/11/17 Javascript