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 相关文章推荐
Content-type 的说明
Oct 09 PHP
上传多个文件的PHP脚本
Nov 26 PHP
require(),include(),require_once()和include_once()区别
Mar 27 PHP
PHP 文章中的远程图片采集到本地的代码
Jul 30 PHP
php中使用session防止用户非法登录后台的方法
Jan 27 PHP
php需登录的文件上传管理系统
Mar 21 PHP
ThinkPHP 模板substr的截取字符串函数详解
Jan 09 PHP
php输出图像的方法实例分析
Feb 16 PHP
Yii2语言国际化的配置教程
Aug 19 PHP
PHP时间处理类操作示例
Sep 05 PHP
php实现文件上传基本验证
Mar 04 PHP
PHP 使用位运算实现四则运算的代码
Mar 09 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目录与文件操作
2011/12/30 PHP
php实现根据IP地址获取其所在省市的方法
2015/04/30 PHP
php 微信开发获取用户信息如何实现
2016/12/13 PHP
一文看懂PHP进程管理器php-fpm
2020/06/01 PHP
Extjs中常用表单介绍与应用
2010/06/07 Javascript
Juqery Html(),append()等方法的Bug解决方法
2010/12/13 Javascript
JQuery获取表格数据示例代码
2014/05/26 Javascript
jQuery实现切换字体大小的方法
2015/03/10 Javascript
jquery实现页面关键词高亮显示的方法
2015/03/12 Javascript
jQuery插件实现控制网页元素动态居中显示
2015/03/24 Javascript
JS延时提示框实现方法详解
2015/11/26 Javascript
jquery注册文本框获取焦点清空,失去焦点赋值的简单实例
2016/09/08 Javascript
js设置随机切换背景图片的简单实例
2017/11/12 Javascript
jquery手机触屏滑动拼音字母城市选择器的实例代码
2017/12/11 jQuery
使用vue-cli编写vue插件的方法
2018/02/26 Javascript
Vue实现简单分页器
2018/12/29 Javascript
Vue表单控件绑定图文详解
2019/02/11 Javascript
layui的layedit富文本赋值方法
2019/09/18 Javascript
JavaScript封装单向链表的示例代码
2020/09/17 Javascript
Openlayers测量距离与面积的实现方法
2020/09/25 Javascript
[04:10]2016国际邀请赛中国区预选赛第二日TOP10精彩集锦
2016/06/28 DOTA
pytyon 带有重复的全排列
2013/08/13 Python
如何使用七牛Python SDK写一个同步脚本及使用教程
2015/08/23 Python
详解Python3操作Mongodb简明易懂教程
2017/05/25 Python
python 通过麦克风录音 生成wav文件的方法
2019/01/09 Python
python使用requests.session模拟登录
2019/08/09 Python
在OpenCV里使用Camshift算法的实现
2019/11/22 Python
Python函数参数分类原理详解
2020/05/28 Python
Python模拟登入的N种方式(建议收藏)
2020/05/31 Python
pytorch快速搭建神经网络_Sequential操作
2020/06/17 Python
Python Selenium实现无可视化界面过程解析
2020/08/25 Python
CSS3 @keyframes简单动画实现
2018/02/24 HTML / CSS
世界最大的私人旅行指南出版商:孤独星球
2016/08/23 全球购物
Canal官网:巴西女性时尚品牌
2019/10/16 全球购物
维多利亚的秘密阿联酋官网:Victoria’s Secret阿联酋
2019/12/07 全球购物
毕业论文评语大全
2014/04/29 职场文书