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中simplexml_load_string函数使用说明
Jan 01 PHP
PHP函数篇之掌握ord()与chr()函数应用
Dec 05 PHP
关于初学PHP时的知识积累总结
Jun 07 PHP
执行、获取远程代码返回:file_get_contents 超时处理的问题详解
Jun 25 PHP
php使用APC实现实时上传进度条功能
Oct 26 PHP
PHP解压tar.gz格式文件的方法
Feb 14 PHP
图文详解phpstorm配置Xdebug进行调试PHP教程
Jun 13 PHP
php 解决substr()截取中文字符乱码问题
Jul 18 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
Aug 28 PHP
PHP实现的pdo连接数据库并插入数据功能简单示例
Mar 30 PHP
PHP使用PDO创建MySQL数据库、表及插入多条数据操作示例
May 30 PHP
Yii框架函数简单用法分析
Sep 09 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常用函数的用法详解
2013/05/10 PHP
PHP输出缓存ob系列函数详解
2014/03/11 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
2016/07/07 PHP
IE下js调试工具Companion.JS
2010/10/15 Javascript
JQuery扩展插件Validate 1 基本使用方法并打包下载
2011/09/05 Javascript
ExtJS下书写动态生成的xml(兼容火狐)
2013/04/02 Javascript
跟我学Nodejs(三)--- Node.js模块
2014/05/25 NodeJs
js改变Iframe中Src的方法
2015/05/05 Javascript
jquery简单实现带渐显效果的选项卡菜单代码
2015/09/01 Javascript
jquery弹出框插件jquery.ui.dialog用法分析
2016/08/20 Javascript
jQuery展示表格点击变色、全选、删除
2017/01/05 Javascript
vue watch深度监听对象实现数据联动效果
2018/08/16 Javascript
javascript浅层克隆、深度克隆对比及实例解析
2020/02/09 Javascript
vue中利用iscroll.js解决pc端滚动问题
2020/02/15 Javascript
Vue列表循环从指定下标开始的多种解决方案
2020/04/08 Javascript
vue2.0实现列表数据增加和删除
2020/06/17 Javascript
详解JavaScript 异步编程
2020/07/13 Javascript
微信小程序视频弹幕发送功能的实现
2020/12/28 Javascript
python解决Fedora解压zip时中文乱码的方法
2016/09/18 Python
Python正则替换字符串函数re.sub用法示例
2017/01/19 Python
用生成器来改写直接返回列表的函数方法
2017/05/25 Python
Python字符串、整数、和浮点型数相互转换实例
2018/08/04 Python
使用Python和Scribus创建一个RGB立方体的方法
2019/07/17 Python
python scatter函数用法实例详解
2020/02/11 Python
win7上tensorflow2.2.0安装成功 引用DLL load failed时找不到指定模块 tensorflow has no attribute xxx 解决方法
2020/05/20 Python
毕业生就业推荐表导师评语
2014/12/31 职场文书
抗洪救灾感谢信
2015/01/22 职场文书
应聘教师求职信范文
2015/03/20 职场文书
停车场管理制度范本
2015/08/05 职场文书
外科护士长工作总结
2015/08/12 职场文书
2016教师廉洁教育心得体会
2016/01/13 职场文书
2016年中学清明节活动总结
2016/04/01 职场文书
解决Python字典查找报Keyerror的问题
2021/05/26 Python
全面盘点MySQL中的那些重要日志文件
2021/11/27 MySQL
Python 使用 Frame tkraise() 方法在 Tkinter 应用程序中的Frame之间切换
2022/04/24 Python
德生TECSUN S-2000使用手册文字版
2022/05/10 无线电