PHP判断一个gif图片是否为动态图片的方法


Posted in PHP onNovember 19, 2014

本文实例讲述了PHP判断一个gif图片是否为动态图片的方法。分享给大家供大家参考。具体方法如下:

如何使用PHP来判断一个gif图片是否为动态图片(动画)?首先想到的是使用getimagesize()函数来看type值,发现都是gif,所以这个办法是不可行的。下面是作者在网上看到的一个函数,用来判断gif是否为动图的。贴出来和大家分享

例子如下:

/*

 * 判断图片是否为动态图片(动画)

 */

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;

}

或者这样做:
用PHP判断一个gif图片是不是动画(多帧)
<?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");

?>

例子2
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'不是动画';

}

?>

测试发现,读取1024字节足够了,因为此时读取的数据流中正好包含了 chr(0×21).chr(0xff).chr(0×0b).'NETSCAPE2.0'

希望本文所述对大家的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP与MySQL交互使用详解
Oct 09 PHP
php截取utf-8中文字符串乱码的解决方法
Mar 29 PHP
php编写一个简单的路由类
Apr 13 PHP
对象失去焦点时自己动提交数据的实现代码
Nov 06 PHP
PHP中文分词 自动获取关键词介绍
Nov 13 PHP
phpexcel导入excel数据使用方法实例
Dec 24 PHP
PHP把MSSQL数据导入到MYSQL的方法
Dec 27 PHP
phpStudy访问速度慢和启动失败的解决办法
Nov 19 PHP
PHP实现的限制IP投票程序IP来源分析
May 04 PHP
PHP精确到毫秒秒杀倒计时实例详解
Mar 14 PHP
Laravel实现ORM带条件搜索分页
Oct 24 PHP
ThinkPHP5和ThinkPHP6的区别
Mar 31 PHP
PHP图片处理之使用imagecopyresampled函数裁剪图片例子
Nov 19 #PHP
PHP图片处理之使用imagecopy函数添加图片水印实例
Nov 19 #PHP
php图片处理函数获取类型及扩展名实例
Nov 19 #PHP
PHP图片处理之图片旋转和图片翻转实例
Nov 19 #PHP
基于递归实现的php树形菜单代码
Nov 19 #PHP
php常用的url处理函数总结
Nov 19 #PHP
PHP调用wsdl文件类型的接口代码分享
Nov 19 #PHP
You might like
php array_flip() 删除数组重复元素
2009/01/14 PHP
php反弹shell实现代码
2009/04/22 PHP
php 获取一个月第一天与最后一天的代码
2010/05/16 PHP
php与java通过socket通信的实现代码
2013/10/21 PHP
Zend Framework缓存Cache用法简单实例
2016/03/19 PHP
PHP实现微信支付(jsapi支付)流程步骤详解
2018/03/15 PHP
JS的数组的扩展实例代码
2008/07/09 Javascript
javascript 多级checkbox选择效果
2009/08/20 Javascript
Javascript学习笔记5 类和对象
2010/01/11 Javascript
JavaScript 验证码的实例代码(附效果图)
2013/03/22 Javascript
node.js中的fs.readSync方法使用说明
2014/12/17 Javascript
基于openlayers4实现点的扩散效果
2020/08/17 Javascript
理顺8个版本vue的区别(小结)
2018/09/17 Javascript
微信小程序非跳转式组件授权登录的方法示例
2019/05/22 Javascript
vue请求服务器数据后绑定不上的解决方法
2019/10/30 Javascript
详解关于Vue单元测试的几个坑
2020/04/26 Javascript
Vue通过Blob对象实现导出Excel功能示例代码
2020/07/31 Javascript
Vue项目配置跨域访问和代理proxy设置方式
2020/09/08 Javascript
JavaScript实现移动端拖动元素
2020/11/24 Javascript
Python函数式编程指南(二):从函数开始
2015/06/24 Python
Python获取当前路径实现代码
2017/05/08 Python
python简单实现操作Mysql数据库
2018/01/29 Python
python实现log日志的示例代码
2018/04/28 Python
pytorch模型存储的2种实现方法
2020/02/14 Python
WebSphere面试题:在WebSphere里面如何部署一个应用
2015/08/02 面试题
创业计划实施的7大步骤
2014/02/05 职场文书
餐饮收银员岗位职责
2014/02/07 职场文书
厂办主管岗位职责范本
2014/02/28 职场文书
会员活动策划方案
2014/08/19 职场文书
离婚协议书怎么写
2014/09/12 职场文书
医生个人自我剖析材料
2014/10/08 职场文书
学习十八大宣传标语
2014/10/09 职场文书
关于运动会广播稿50字
2014/10/18 职场文书
2014年数学教研组工作总结
2014/12/06 职场文书
专职安全员岗位职责
2015/04/11 职场文书
优质护理心得体会
2016/01/22 职场文书