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的FTP学习(二)[转自奥索]
Oct 09 PHP
在Zeus Web Server中安装PHP语言支持
Oct 09 PHP
PHP 数据结构 算法描述 冒泡排序 bubble sort
Jul 10 PHP
php入门学习知识点八 PHP中for循环基本应用之九九乘法口绝表
Jul 14 PHP
114啦源码(114la)不能生成地方房产和地方报刊问题4级页面0字节的解决方法
Jan 12 PHP
PHP中的错误处理、异常处理机制分析
May 07 PHP
在PHP上显示JFreechart画的统计图方法
Nov 03 PHP
详解PHP归并排序的实现
Oct 18 PHP
深入解析Laravel5.5中的包自动发现Package Auto Discovery
Sep 13 PHP
PHP文件系统管理(实例讲解)
Sep 19 PHP
在Laravel 的 Blade 模版中实现定义变量
Oct 14 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
Dec 18 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简洁函数(PHP简单明了函数语法)
2012/06/10 PHP
Yii配置与使用memcached缓存的方法
2016/07/13 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
js 禁止选择功能实现代码(兼容IE/Firefox)
2010/04/23 Javascript
jquery中eq和get的区别与使用方法
2011/04/14 Javascript
js动态创建上传表单通过iframe模拟Ajax实现无刷新
2014/02/20 Javascript
让checkbox不选中即将选中的checkbox不选中
2014/07/11 Javascript
js时间日期格式化封装函数
2014/12/02 Javascript
jQuery插件dataTables添加序号列的方法
2016/07/06 Javascript
js实现精确到毫秒的倒计时效果
2016/08/05 Javascript
详解AngularJS通过ocLazyLoad实现动态(懒)加载模块和依赖
2017/03/01 Javascript
React应用中使用Bootstrap的方法
2017/08/15 Javascript
200行代码实现blockchain 区块链实例详解
2018/03/14 Javascript
vue之父子组件间通信实例讲解(props、$ref、$emit)
2018/05/22 Javascript
nuxt.js 缓存实践
2018/06/25 Javascript
Node.js中的不安全跳转如何防御详解
2018/10/21 Javascript
JS中min函数实例讲解
2019/02/18 Javascript
微信小程序实现人脸识别登陆的示例代码
2019/04/02 Javascript
ES6中Symbol、Set和Map用法详解
2019/08/20 Javascript
js针对图片加载失败的处理方法分析
2019/08/24 Javascript
JS开发自己的类库实例分析
2019/08/28 Javascript
创建nuxt.js项目流程图解
2020/03/13 Javascript
Python 创建子进程模块subprocess详解
2015/04/08 Python
python实现的系统实用log类实例
2015/06/30 Python
python生成密码字典的方法
2018/07/06 Python
将python2.7添加进64位系统的注册表方式
2019/11/20 Python
在线购买廉价折扣书籍和小说:BookOutlet.com
2018/02/19 全球购物
Shopee越南:东南亚与台湾电商平台
2019/02/03 全球购物
国际商务专业求职信
2014/07/15 职场文书
私营公司诉讼代理委托书范本
2014/09/13 职场文书
国家税务局干部作风整顿整改措施
2014/09/18 职场文书
大学生入党积极分子党校学习思想汇报
2014/10/25 职场文书
中考学习决心书
2015/02/04 职场文书
酒店宣传语大全
2015/07/13 职场文书
如何用JavaScript学习算法复杂度
2021/04/30 Javascript
MySQL 亿级数据导入导出及迁移笔记
2021/06/18 MySQL