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中使用灵巧的体系结构
Oct 09 PHP
php下使用无限生命期Session的方法
Mar 16 PHP
轻松修复Discuz!数据库
May 03 PHP
PHP filter_var() 函数 Filter 函数
Apr 25 PHP
php中选择什么接口(mysql、mysqli)访问mysql
Feb 06 PHP
php获取域名的google收录示例
Mar 24 PHP
Linux中为php配置伪静态
Dec 17 PHP
php+mysql实现用户注册登陆的方法
Jan 03 PHP
php自动识别文字编码并转换为目标编码的方法
Aug 08 PHP
PHP的Yii框架使用中的一些错误解决方法与建议
Aug 21 PHP
PDO::commit讲解
Jan 27 PHP
Laravel6.18.19如何优雅的切换发件账户
Jun 14 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编程效率技巧
2015/08/13 PHP
php使用ffmpeg获取视频信息并截图的实现方法
2016/05/03 PHP
php获取POST数据的三种方法实例详解
2016/12/20 PHP
jQuery 使用手册(三)
2009/09/23 Javascript
javascript window.opener的用法分析
2010/04/07 Javascript
jQuery 打造动态渐变按钮 详细图文教程
2010/04/25 Javascript
js限制textarea每行输入字符串长度的代码
2012/10/31 Javascript
JS 数字转换研究总结
2013/12/26 Javascript
利用函数的惰性载入提高javascript代码执行效率
2014/05/05 Javascript
详解javascript跨浏览器事件处理程序
2016/03/27 Javascript
jQuery中借助deferred来请求及判断AJAX加载的实例讲解
2016/05/24 Javascript
web.js.字符串与正则表达式操作
2017/05/13 Javascript
vue 1.x 交互实现仿百度下拉列表示例
2017/10/21 Javascript
jQuery实现form表单序列化转换为json对象功能示例
2018/05/23 jQuery
PostgreSQL Node.js实现函数计算方法示例
2019/02/12 Javascript
CountUp.js实现数字滚动增值效果
2019/10/17 Javascript
JS document form表单元素操作完整示例
2020/01/13 Javascript
JavaScript常用工具函数汇总(浏览器环境)
2020/09/17 Javascript
Python抓取手机号归属地信息示例代码
2016/11/28 Python
Python字典及字典基本操作方法详解
2018/01/30 Python
利用python的socket发送http(s)请求方法示例
2018/05/07 Python
Python测试网络连通性示例【基于ping】
2018/08/03 Python
Python3.5 处理文本txt,删除不需要的行方法
2018/12/10 Python
在python下使用tensorflow判断是否存在文件夹的实例
2019/06/10 Python
pytorch实现focal loss的两种方式小结
2020/01/02 Python
TensorFlow2.0:张量的合并与分割实例
2020/01/19 Python
python logging.basicConfig不生效的原因及解决
2020/02/20 Python
python如何使用代码运行助手
2020/07/03 Python
selenium如何定位span元素的实现
2021/01/13 Python
微信小程序实现可实时改变转速的css3旋转动画实例代码
2018/09/11 HTML / CSS
教师党性分析材料
2014/02/04 职场文书
股东合作协议书
2014/04/14 职场文书
MySQL为数据表建立索引的原则详解
2022/03/03 MySQL
python lambda 表达式形式分析
2022/04/03 Python
Tomcat 与 maven 的安装与使用教程
2022/06/16 Servers
win10忘记pin密码登录不了怎么办?win10忘记pin密码登不进去的解决方法
2022/07/07 数码科技