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中看实例学正则表达式
Dec 25 PHP
PHP学习之整理字符串
Apr 17 PHP
php+MySQL判断update语句是否执行成功的方法
Aug 28 PHP
PHP中使用SimpleXML检查XML文件结构实例
Jan 07 PHP
php+ajax实时刷新简单实例
Feb 25 PHP
使用PHP和JavaScript判断请求是否来自微信内浏览器
Aug 18 PHP
php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
Oct 20 PHP
基于jQueryUI和Corethink实现百度的搜索提示功能
Nov 09 PHP
PHP htmlspecialchars()函数用法与实例讲解
Mar 08 PHP
PHP中ltrim()函数的用法与实例讲解
Mar 28 PHP
解决laravel查询构造器中的别名问题
Oct 17 PHP
php计数排序算法的实现代码(附四个实例代码)
Mar 31 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+ajaxfileupload+jcrop插件完美实现头像上传剪裁
2014/06/09 PHP
10个简化PHP开发的工具
2014/12/25 PHP
PHP随机生成信用卡卡号的方法
2015/03/23 PHP
基于JQuery实现鼠标点击文本框显示隐藏提示文本
2012/02/23 Javascript
jQuery之字体大小的设置方法
2014/02/27 Javascript
JQuery获取与设置HTML元素的内容或文本的实现代码
2014/06/20 Javascript
javascript 获取函数形参个数
2014/07/31 Javascript
jQuery中:button选择器用法实例
2015/01/04 Javascript
原生Js实现简易烟花爆炸效果的方法
2015/03/20 Javascript
JavaScript常用标签和方法总结
2015/09/01 Javascript
jQuery实现的指纹扫描效果实例(附演示与demo源码下载)
2016/01/26 Javascript
jQuery多个版本和其他js库冲突的解决方法
2016/08/11 Javascript
浅谈js控制li标签排序问题 js调用php函数的方法
2016/10/16 Javascript
JavaScript使用delete删除数组元素用法示例【数组长度不变】
2017/01/17 Javascript
react.js 父子组件数据绑定实时通讯的示例代码
2017/09/25 Javascript
js实现一个简单的MVVM框架示例
2018/01/15 Javascript
JavaScript中为事件指定处理程序的五种方式分析
2018/07/27 Javascript
javascript json字符串到json对象转义问题
2019/01/22 Javascript
Vue中nprogress页面加载进度条的方法实现
2020/11/13 Javascript
python实现保存网页到本地示例
2014/03/16 Python
Django集成百度富文本编辑器uEditor攻略
2014/07/04 Python
python利用跳板机ssh远程连接redis的方法
2019/02/19 Python
Django中ORM外键和表的关系详解
2019/05/20 Python
使用pickle存储数据dump 和 load实例讲解
2019/12/30 Python
Django实现内容缓存实例方法
2020/06/30 Python
Pytorch损失函数nn.NLLLoss2d()用法说明
2020/07/07 Python
HTML5 Canvas旋转动画的2个代码例子(一个旋转的太极图效果)
2014/04/10 HTML / CSS
NYX Professional Makeup官方网站:专业彩妆和美容产品
2019/10/29 全球购物
函授教育个人学习的自我评价
2013/12/31 职场文书
初一地理教学反思
2014/01/16 职场文书
员工拓展培训方案
2014/02/15 职场文书
指导教师评语
2014/04/26 职场文书
个人主要事迹材料
2014/08/26 职场文书
师范生见习报告
2014/10/31 职场文书
Python装饰器的练习题
2021/11/23 Python
MySQL数据库⾼可⽤HA实现小结
2022/01/22 MySQL