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 相关文章推荐
解析PHP中DIRECTORY_SEPARATOR,PATH_SEPARATOR两个常量的作用
Jun 21 PHP
php+MySQL判断update语句是否执行成功的方法
Aug 28 PHP
PHP+Mysql实现多关键字与多字段生成SQL语句的函数
Nov 05 PHP
[原创]ThinkPHP让../Public在模板不解析(直接输出)的方法
Oct 09 PHP
PHP 7的一些引人注目的新特性简单介绍
Nov 08 PHP
浅析php设计模式之数据对象映射模式
Mar 03 PHP
PHP与Java对比学习日期时间函数
Jul 03 PHP
详谈PHP程序Laravel 5框架的优化技巧
Jul 18 PHP
php取出数组单个值的方法
Mar 12 PHP
tp5(thinkPHP5)框架连接数据库的方法示例
Dec 24 PHP
PHP实现文字写入图片功能
Feb 18 PHP
关于PHP数组迭代器的使用方法实例
Nov 17 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下通过POST还是GET来传值
2008/06/05 PHP
php面向对象全攻略 (十一)__toString()用法 克隆对象 __call处理调用错误
2009/09/30 PHP
PHP header函数分析详解
2011/08/06 PHP
PHP使用mysql_fetch_object从查询结果中获取对象集的方法
2015/03/18 PHP
PHP使用内置dir类实现目录遍历删除
2015/03/31 PHP
Firefox outerHTML实现代码
2009/06/04 Javascript
Javascript new关键字的玄机 以及其它
2010/08/25 Javascript
IE图片缓存document.execCommand(&quot;BackgroundImageCache&quot;,false,true)
2011/03/01 Javascript
jquery tab插件精简版分享
2011/09/10 Javascript
实现点击列表弹出列表索引的两种方式
2013/03/08 Javascript
javascript操作excel生成报表全攻略
2014/05/04 Javascript
js简单判断移动端系统的方法
2016/02/25 Javascript
Node.js中 __dirname 的使用介绍
2017/06/19 Javascript
实例详解JSON取值(key是中文或者数字)方式
2017/08/24 Javascript
基于jQuery实现定位导航位置效果
2017/11/15 jQuery
JavaScript实现微信红包算法及问题解决方法
2018/04/26 Javascript
实例讲解vue源码架构
2019/01/24 Javascript
Vue中图片Src使用变量的方法
2019/10/30 Javascript
用JS实现选项卡
2020/03/23 Javascript
python正则分组的应用
2013/11/10 Python
在Django的URLconf中使用命名组的方法
2015/07/18 Python
微信跳一跳自动运行python脚本
2018/01/08 Python
使用Filter过滤python中的日志输出的实现方法
2019/07/17 Python
python实现图片上添加图片
2019/11/26 Python
Python reshape的用法及多个二维数组合并为三维数组的实例
2020/02/07 Python
在python中利用dict转json按输入顺序输出内容方式
2020/02/27 Python
HTML中使用SVG与SVG预定义形状元素介绍
2013/06/28 HTML / CSS
英国男女奢华内衣和泳装购物网站:Figleaves
2017/01/28 全球购物
马来西亚演唱会订票网站:StubHub马来西亚
2018/10/18 全球购物
Ben Sherman官方网站:英国男装品牌
2019/10/22 全球购物
顶撞领导检讨书
2014/01/29 职场文书
书法大赛策划方案
2014/06/04 职场文书
2014年销售人员工作总结
2014/11/27 职场文书
情人节活动总结范文
2015/02/05 职场文书
教师个人培训总结
2015/02/11 职场文书
不知如何爱孩子,这些方法教会您
2019/08/06 职场文书