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 相关文章推荐
学习discuz php 引入文件的方法DISCUZ_ROOT
Jun 21 PHP
PHP5 面向对象(学习记录)
Dec 02 PHP
php ob_flush,flush在ie中缓冲无效的解决方法
May 09 PHP
本地机apache配置基于域名的虚拟主机详解
Aug 10 PHP
php 邮件发送问题解决
Mar 22 PHP
php向js函数传参的几种方法
Aug 10 PHP
PHP实现图片裁剪、添加水印效果代码
Oct 01 PHP
Yii rules常用规则示例
Mar 15 PHP
PHP实现简易计算器功能
Aug 28 PHP
php 实现银联商务H5支付的示例代码
Oct 12 PHP
php查看一个变量的占用内存的实例代码
Mar 29 PHP
PHP判断是否是json字符串
Apr 01 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
受疫情影响 动画《Re从零开始的异世界生活》第二季延期至7月
2020/03/10 日漫
php替换字符串中间字符为省略号的方法
2015/05/04 PHP
PHP加密解密类实例代码
2016/07/20 PHP
PHP快速排序算法实现的原理及代码详解
2019/04/03 PHP
Javascript的IE和Firefox兼容性汇编
2006/07/01 Javascript
JavaScript生成GUID的多种算法小结
2013/08/18 Javascript
table对象中的insertRow与deleteRow使用示例
2014/01/26 Javascript
简介JavaScript中toTimeString()方法的使用
2015/06/12 Javascript
jquery实现经典的淡入淡出选项卡效果代码
2015/09/22 Javascript
Javascript点击其他任意地方隐藏关闭DIV实例
2016/06/21 Javascript
Javascript 数组去重的方法(四种)详解及实例代码
2016/11/24 Javascript
jquery dataTable 获取某行数据
2017/05/05 jQuery
详解Vue用axios发送post请求自动set cookie
2017/05/10 Javascript
用Axios Element实现全局的请求loading的方法
2018/03/15 Javascript
Vue CLI3 如何支持less的方法示例
2018/08/29 Javascript
详解Vue webapp项目通过HBulider打包原生APP(vue+webpack+HBulider)
2019/02/02 Javascript
微信小程序自定义弹窗实现详解(可通用)
2019/07/04 Javascript
vue-cli3中配置alias和打包加hash值操作
2020/09/04 Javascript
用python分割TXT文件成4K的TXT文件
2009/05/23 Python
python使用新浪微博api上传图片到微博示例
2014/01/10 Python
实例解析Python中的__new__特殊方法
2016/06/02 Python
linux平台使用Python制作BT种子并获取BT种子信息的方法
2017/01/20 Python
Python中Threading用法详解
2017/12/27 Python
Python操作Redis之设置key的过期时间实例代码
2018/01/25 Python
Python实现XML文件解析的示例代码
2018/02/05 Python
python实现求解列表中元素的排列和组合问题
2018/03/15 Python
分分钟入门python语言
2018/03/20 Python
python实现本地图片转存并重命名的示例代码
2018/10/27 Python
小结Python的反射机制
2020/09/28 Python
python 实现数据库中数据添加、查询与更新的示例代码
2020/12/07 Python
用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案
2021/03/03 Python
css3和jquery实现自定义checkbox和radiobox组件
2014/04/22 HTML / CSS
CSS3实现多样的边框效果
2018/05/04 HTML / CSS
常用UNIX 命令(Linux的常用命令)
2015/12/26 面试题
法务专员岗位职责
2014/01/02 职场文书
python 提取html文本的方法
2021/05/20 Python