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 相关文章推荐
Windows PHP5和Apache的安装与配置
Jun 08 PHP
PHP 分页类(模仿google)-面试题目解答
Sep 13 PHP
PHP中开发XML应用程序之基础篇 添加节点 删除节点 查询节点 查询节
Jul 09 PHP
PhpMyAdmin出现export.php Missing parameter: what /export_type错误解决方法
Aug 09 PHP
解析用PHP实现var_export的详细介绍
Jun 20 PHP
php读取文件内容的几种方法详解
Jun 26 PHP
PHP自动识别字符集并完成转码详解
Aug 02 PHP
php序列化函数serialize() 和 unserialize() 与原生函数对比
May 08 PHP
Zend Framework教程之Zend_Db_Table表关联实例详解
Mar 23 PHP
基于thinkPHP类的插入数据库操作功能示例
Jan 06 PHP
Laravel网站打开速度优化的方法汇总
Jul 16 PHP
完美的php分页类
Oct 24 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
SONY SRF-M100的电路分析
2021/03/02 无线电
PHP将整个网站生成HTML纯静态网页的方法总结
2012/02/05 PHP
php无序树实现方法
2015/07/28 PHP
laravel框架实现为 Blade 模板引擎添加新文件扩展名操作示例
2020/01/25 PHP
javascript 导出数据到Excel(处理table中的元素)
2009/12/18 Javascript
jQuery EasyUI 中文API Button使用实例
2010/04/14 Javascript
JavaScript中SQL语句的应用实现
2010/05/04 Javascript
Javascript 浮点运算精度问题分析与解决
2014/03/26 Javascript
node.js中的fs.readdirSync方法使用说明
2014/12/17 Javascript
浅谈关于JavaScript API设计的一些建议和准则
2015/06/24 Javascript
轻松学习jQuery插件EasyUI EasyUI创建CRUD应用
2015/11/30 Javascript
Easyui Treegrid改变默认图标的方法
2016/04/29 Javascript
浅谈Node.js 子进程与应用场景
2018/01/24 Javascript
vue生命周期和react生命周期对比【推荐】
2018/09/19 Javascript
vue 路由守卫(导航守卫)及其具体使用
2020/02/25 Javascript
[01:56]2014DOTA2西雅图邀请赛 MVP外卡赛老队长精辟点评
2014/07/09 DOTA
Python完全新手教程
2007/02/08 Python
python实现在每个独立进程中运行一个函数的方法
2015/04/23 Python
python中redis的安装和使用
2016/12/04 Python
pandas系列之DataFrame 行列数据筛选实例
2018/04/12 Python
在PyCharm下打包*.py程序成.exe的方法
2018/11/29 Python
Python3视频转字符动画的实例代码
2019/08/29 Python
Python2比较当前图片跟图库哪个图片相似的方法示例
2019/09/28 Python
python绘制随机网络图形示例
2019/11/21 Python
Python如何基于selenium实现自动登录博客园
2019/12/16 Python
python dumps和loads区别详解
2020/02/04 Python
tensorflow中tf.reduce_mean函数的使用
2020/04/19 Python
python转化excel数字日期为标准日期操作
2020/07/14 Python
html通过canvas转成base64的方法
2019/07/18 HTML / CSS
职业生涯规划书结束语
2014/04/15 职场文书
优秀护士先进事迹
2014/05/08 职场文书
民族团结好少年事迹材料
2014/08/19 职场文书
基层党员干部四风问题整改方向和措施
2014/09/25 职场文书
建筑专业毕业生求职信
2014/09/30 职场文书
法院四风对照检查材料思想汇报
2014/10/06 职场文书
商务宴请邀请函范文
2015/02/02 职场文书