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 相关文章推荐
数据库相关问题
Oct 09 PHP
php 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码
Nov 14 PHP
PHP实用函数分享之去除多余的0
Feb 06 PHP
PHP嵌套输出缓冲代码实例
May 12 PHP
thinkphp框架实现删除和批量删除
Jun 29 PHP
[原创]PHPCMS遭遇会员投稿审核无效的解决方法
Jan 11 PHP
删除PHP数组中的重复元素的实现代码
Apr 10 PHP
PHP序列化的四种实现方法与横向对比
Nov 29 PHP
php/JS实现的生成随机密码(验证码)功能示例
Jun 06 PHP
PHP pthreads v3下worker和pool的使用方法示例
Feb 21 PHP
深入分析PHP设计模式
Jun 15 PHP
imagettftext() 失效,不起作用
Mar 09 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 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法
2016/01/04 PHP
php 可变函数使用小结
2018/06/12 PHP
从零开始学习jQuery (十一) 实战表单验证与自动完成提示插件
2011/02/23 Javascript
基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解
2013/05/07 Javascript
js获取 type=radio 值的方法
2014/05/09 Javascript
javascript关于运动的各种问题经典总结
2015/04/27 Javascript
JavaScript简单实现鼠标移动切换图片的方法
2016/02/23 Javascript
原生JS实现-星级评分系统的简单实例
2016/08/21 Javascript
js正则表达式惰性匹配和贪婪匹配用法分析
2016/12/26 Javascript
通过修改360抢票的刷新频率和突破8车次限制实现方法
2017/01/04 Javascript
vuex的module模块用法示例
2018/11/12 Javascript
Vue组件Draggable实现拖拽功能
2018/12/01 Javascript
vue不操作dom实现图片轮播的示例代码
2019/12/18 Javascript
vue使用自定义事件的表单输入组件用法详解【日期组件与货币组件】
2020/06/01 Javascript
vue中jsonp插件的使用方法示例
2020/09/10 Javascript
python复制文件的方法实例详解
2015/05/22 Python
如何将python中的List转化成dictionary
2016/08/15 Python
基于Python的接口测试框架实例
2016/11/04 Python
python实现的二叉树定义与遍历算法实例
2017/06/30 Python
详解Pytorch 使用Pytorch拟合多项式(多项式回归)
2018/05/24 Python
Python爬取qq空间说说的实例代码
2018/08/17 Python
python 2.7 检测一个网页是否能正常访问的方法
2018/12/26 Python
Python实现字符串中某个字母的替代功能
2019/10/21 Python
Python网络编程之使用TCP方式传输文件操作示例
2019/11/01 Python
Windows10下Tensorflow2.0 安装及环境配置教程(图文)
2019/11/21 Python
详解python环境安装selenium和手动下载安装selenium的方法
2020/03/17 Python
Python3 搭建Qt5 环境的方法示例
2020/07/16 Python
一款html5 canvas实现的图片玻璃碎片特效
2014/09/11 HTML / CSS
HTML5新增加的功能详解
2016/09/05 HTML / CSS
Vans奥地利官方网站:美国原创极限运动潮牌
2018/09/30 全球购物
上班打牌检讨书
2014/02/07 职场文书
授权委托书格式
2014/07/31 职场文书
学生检讨书范文
2014/10/30 职场文书
实习生个人总结范文
2015/02/28 职场文书
Python 如何利用ffmpeg 处理视频素材
2021/11/27 Python
CSS 鼠标选中文字后改变背景色的实现代码
2023/05/21 HTML / CSS