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实现用户认证及管理完全源码
Mar 11 PHP
基于PHP遍历数组的方法汇总分析
Jun 08 PHP
深入解析PHP 5.3.x 的strtotime() 时区设定 警告信息修复
Aug 05 PHP
ThinkPHP之foreach标签使用概述
Jun 30 PHP
PHP多进程编程实例
Oct 15 PHP
php根据生日计算年龄的方法
Jul 13 PHP
基于php实现七牛抓取远程图片
Dec 01 PHP
PHP转换文本框内容为HTML格式的方法
Jul 20 PHP
SAE实时日志接口SDK用法示例
Oct 09 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
Dec 21 PHP
PHP类与对象后期静态绑定操作实例详解
Dec 20 PHP
如何用PHP实现多线程编程
May 26 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
修改Zend引擎实现PHP源码加密的原理及实践
2008/04/14 PHP
PHP 表单提交给自己
2008/07/24 PHP
PHP include_path设置技巧分享
2011/07/03 PHP
PHP中mb_convert_encoding与iconv函数的深入解析
2013/06/21 PHP
深入理解PHP类的自动载入机制
2016/09/16 PHP
轻松掌握php设计模式之访问者模式
2016/09/23 PHP
PHP高精确度运算BC函数库实例详解
2017/08/15 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
php用户名的密码加密更安全的方法
2019/06/21 PHP
解决 FireFox 下[使用event很麻烦] 的问题.
2006/08/22 Javascript
文本框的字数限制功能jquery插件
2009/11/24 Javascript
一段批量给页面上的控件赋值js
2010/06/19 Javascript
Javascript异步编程的4种方法让你写出更出色的程序
2013/01/17 Javascript
Jquery uploadify图片上传插件无法上传的解决方法
2013/12/16 Javascript
javascript计算用户打开网页的停留时间
2014/01/09 Javascript
javascript单引号和双引号的区别和处理
2014/05/14 Javascript
javascript轻量级模板引擎juicer使用指南
2014/06/22 Javascript
JavaScript生成福利彩票双色球号码
2015/05/15 Javascript
多个js毫秒倒计时同时进行效果
2016/01/05 Javascript
浅谈JS中逗号运算符的用法
2016/06/12 Javascript
Angular4表单验证代码详解
2017/09/03 Javascript
浅谈Node.js CVE-2017-14849 漏洞分析(详细步骤)
2017/11/10 Javascript
JavaScript fetch接口案例解析
2018/08/30 Javascript
vue设计一个倒计时秒杀的组件详解
2019/04/06 Javascript
[46:43]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第三局
2016/02/28 DOTA
浅谈Python用QQ邮箱发送邮件时授权码的问题
2018/01/29 Python
解决Ubuntu pip 安装 mysql-python包出错的问题
2018/06/11 Python
python爬虫使用requests发送post请求示例详解
2020/08/05 Python
套娃式文件夹如何通过Python批量处理
2020/08/23 Python
纯CSS3+DIV实现小三角形边框效果的示例代码
2020/08/03 HTML / CSS
UGG雪地靴荷兰官网:UGG荷兰
2016/09/09 全球购物
生产车间实习自我鉴定
2013/09/23 职场文书
个人求职信范文分享
2013/12/13 职场文书
出差报告怎么写
2014/11/06 职场文书
财务人员廉洁自律心得体会
2016/01/13 职场文书
Javascript的promise,async和await的区别详解
2022/03/24 Javascript