php判断GIF图片是否为动画的方法


Posted in PHP onSeptember 04, 2020

本文介绍了PHP判断GIF图片是动画的方法,具体步骤如下:

首先,gif动画是gif89格式的,发现文件开头是gif89。但是很多透明图片也是用的gif89格式,

GOOGLE到的:可以检查文件中是否包含:chr(0×21).chr(0xff).chr(0×0b).'NETSCAPE2.0'

chr(0×21).chr(0xff) 是gif图片中扩展功能段的标头,'NETSCAPE2.0'是扩展功能执行的程序名

程序代码如下:

<?php
function check($image){
$content= file_get_contents($image);
if(preg_match("/".chr(0x21).chr(0xff).chr(0x0b).'NETSCAPE2.0'."/",$content)){ 
return true;
}else{
return false;
}
}
if(check('/home/lyy/luoyinyou/2.gif')){
echo'真是动画';
}else{
echo'不是动画';
}
?>

这段代码还是可以再优化的:

因为实际上 chr(0×21).chr(0xff).chr(0×0b).'NETSCAPE2.0' 只在文件头部出现,可以 echo 来看看 ,但不是最头部,是在头部的某一个位置,所以,严格来说需要读取一部分文件,但不用全部,这样可以加快速度和节省内存。

程序可改写如下:

function check_animation($image_file){
$fp = fopen($image_file, 'rb');
$image_head = fread($fp,1024);
fclose($fp);
return preg_match("/".chr(0x21).chr(0xff).chr(0x0b).'NETSCAPE2.0'."/",$image_head) ? true : false;
}

测试发现,读取1024字节足够了,因为此时读取的数据流中正好包含了 chr(0×21).chr(0xff).chr(0×0b).'NETSCAPE2.0'

其他网友的补充

<?php
function IsAnimatedGif($filename)
{
	$fp = fopen($filename, 'rb');
	$filecontent = fread($fp, filesize($filename));
	fclose($fp);
	return strpos($filecontent,chr(0x21).chr(0xff).chr(0x0b).'NETSCAPE2.0') === FALSE?0:1;
}
echo IsAnimatedGif("51windows.gif");
?>

到此这篇关于php判断GIF图片是否为动画的方法的文章就介绍到这了,更多相关php判断GIF图片是否为动画内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
snoopy PHP版的网络客户端提供本地下载
Apr 15 PHP
php入门学习知识点二 PHP简单的分页过程与原理
Jul 14 PHP
php实现rc4加密算法代码
Apr 25 PHP
php中导出数据到excel时数字变为科学计数的解决方法
Feb 03 PHP
PHP使用gmdate实现将一个UNIX 时间格式化成GMT文本的方法
Mar 19 PHP
PHP上传文件参考配置大文件上传
Dec 16 PHP
PHP 实现字符串翻转(包含中文汉字)的实现代码
Apr 01 PHP
PHP实现动态创建XML文档的方法
Mar 30 PHP
PHP7中I/O模型内核剖析详解
Apr 14 PHP
php和nginx交互实例讲解
Sep 24 PHP
Laravel5.1 框架Request请求操作常见用法实例分析
Jan 04 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
Feb 18 PHP
ThinkPHP3.2.2的插件控制器功能简述
Jul 09 #PHP
PHP 只允许指定IP访问(允许*号通配符过滤IP)
Jul 08 #PHP
php中出现空白页的原因及解决方法汇总
Jul 08 #PHP
php之Smarty模板使用方法示例详解
Jul 08 #PHP
高性能PHP框架Symfony2经典入门教程
Jul 08 #PHP
Thinkphp的volist标签嵌套循环使用教程
Jul 08 #PHP
PHP实现生成透明背景的PNG缩略图函数分享
Jul 08 #PHP
You might like
PHP实现的封装验证码类详解
2013/06/18 PHP
php不写闭合标签的好处
2014/03/04 PHP
使用PHP破解防盗链图片的一个简单方法
2014/06/07 PHP
php自动更新版权信息显示的方法
2015/06/19 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
php把文件设置为插件的技巧方法
2020/02/03 PHP
php实现简单四则运算器
2020/11/29 PHP
jquery attr方法获取input的checked属性问题
2014/05/26 Javascript
escape编码与unescape解码汉字出现乱码的解决方法
2014/07/02 Javascript
跟我学习javascript的prototype原型和原型链
2015/11/18 Javascript
JavaScript中实现键值对应的字典与哈希表结构的示例
2016/06/12 Javascript
详解VUE 定义全局变量的几种实现方式
2017/06/01 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(上)
2018/04/18 Javascript
vue.js添加一些触摸事件以及安装fastclick的实例
2018/08/28 Javascript
KOA+egg.js集成kafka消息队列的示例
2018/11/09 Javascript
解决layer弹出层自适应页面大小的问题
2019/09/16 Javascript
[05:06]TI4西雅图DOTA2前线报道 海涛密探LGD训练
2014/07/09 DOTA
Python操作Sql Server 2008数据库的方法详解
2018/05/17 Python
Django给admin添加Action的步骤详解
2019/05/01 Python
在PyCharm中控制台输出日志分层级分颜色显示的方法
2019/07/11 Python
实例详解Python装饰器与闭包
2019/07/29 Python
DjangoWeb使用Datatable进行后端分页的实现
2020/05/18 Python
Python变量及数据类型用法原理汇总
2020/08/06 Python
Python实现列表索引批量删除的5种方法
2020/11/16 Python
日本无添加化妆品:HABA
2016/08/18 全球购物
瑞典网上购买现代和复古家具:Reforma
2019/10/21 全球购物
软件工程师面试题
2012/06/25 面试题
银行实习生的自我评价
2014/01/13 职场文书
旅游管理毕业生自荐信范文
2014/03/19 职场文书
竞选学习委员演讲稿
2014/09/01 职场文书
公司离职证明范本(5篇)
2014/09/17 职场文书
幽默导游词开场白
2015/05/29 职场文书
实施意见格式范本
2015/06/05 职场文书
辞职信怎么写?
2019/05/21 职场文书
2019学子的答谢词范本!
2019/07/05 职场文书
python单元测试之pytest的使用
2021/06/07 Python