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 相关文章推荐
关于使用coreseek并为其做分页的介绍
Jun 21 PHP
ThinkPHP实现多数据库连接的解决方法
Jul 01 PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
Sep 29 PHP
PHP中ini_set与ini_get用法实例
Nov 04 PHP
PHP实现通过Luhn算法校验信用卡卡号是否有效
Mar 23 PHP
详解php中 === 的使用
Oct 24 PHP
iOS自定义提示弹出框实现类似UIAlertView的效果
Nov 16 PHP
PHP获取本周所有日期或者最近七天所有日期的方法
Jun 20 PHP
Yii框架通过请求组件处理get,post请求的方法分析
Sep 03 PHP
php更新cookie内容的详细方法
Sep 30 PHP
yii框架结合charjs实现统计30天数据的方法
Apr 04 PHP
如何解决php-fpm启动不了问题
Nov 17 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 addslashes和mysql_real_escape_string
2010/01/24 PHP
php中Array2xml类实现数组转化成XML实例
2014/12/08 PHP
详解PHP如何更好的利用PHPstorm的自动提示
2017/08/18 PHP
PHP实现获取毫秒时间戳的方法【使用microtime()函数】
2019/03/01 PHP
Add Formatted Data to a Spreadsheet
2007/06/12 Javascript
js三种排序算法分享
2012/08/16 Javascript
jquery如何改变html标签的样式(两种实现方法)
2013/01/16 Javascript
jquery通过visible来判断标签是否显示或隐藏
2014/05/08 Javascript
Jquery实现$.fn.extend和$.extend函数
2016/04/14 Javascript
JavaScript reduce和reduceRight详解
2016/10/24 Javascript
12个非常有用的JavaScript技巧
2017/05/17 Javascript
尝试自己动手用react来写一个分页组件(小结)
2018/02/09 Javascript
快速搭建vue2.0+boostrap项目的方法
2018/04/09 Javascript
JavaScript DOM元素常见操作详解【添加、删除、修改等】
2018/05/09 Javascript
JS实现图片旋转动画效果封装与使用示例
2018/07/09 Javascript
node.js实现http服务器与浏览器之间的内容缓存操作示例
2020/02/11 Javascript
详解关于Vue单元测试的几个坑
2020/04/26 Javascript
vue pages 多入口项目 + chainWebpack 全局引用缩写说明
2020/09/21 Javascript
微信小程序调用后台service教程详解
2020/11/06 Javascript
Python开发之快速搭建自动回复微信公众号功能
2016/04/22 Python
python3新特性函数注释Function Annotations用法分析
2016/07/28 Python
利用Opencv中Houghline方法实现直线检测
2018/02/11 Python
Python编程中NotImplementedError的使用方法
2018/04/21 Python
基于Python2、Python3中reload()的不同用法介绍
2019/08/12 Python
Python读取YAML文件过程详解
2019/12/30 Python
为什么称python为胶水语言
2020/06/16 Python
HTML5中的音频和视频媒体播放元素小结
2016/01/29 HTML / CSS
英国最大的在线蜡烛商店:Candles Direct
2019/03/26 全球购物
西班牙最好的在线购买葡萄酒的商店:Vinoseleccion
2019/10/30 全球购物
2019年.net常见面试问题
2012/02/12 面试题
幼儿园六一儿童节主持节目串词
2014/03/21 职场文书
病危通知书样本
2015/04/17 职场文书
上课讲话检讨书范文
2015/05/07 职场文书
农业项目投资意向书
2015/05/09 职场文书
党课主持词大全
2015/06/30 职场文书
闭幕词的写作格式与范文!
2019/06/24 职场文书