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 在线打包_支持子目录
Jun 28 PHP
discuz Passport 通行证 整合笔记
Jun 30 PHP
Linux下将excel数据导入到mssql数据库中的方法
Feb 08 PHP
Zend Studio去除编辑器的语法警告设置方法
Oct 24 PHP
关于JSON以及JSON在PHP中的应用技巧
Nov 27 PHP
php单态设计模式(单例模式)实例
Nov 18 PHP
php获取twitter最新消息的方法
Apr 14 PHP
php+mysql实现无限级分类
Nov 11 PHP
php代码架构的八点注意事项
Jan 25 PHP
ThinkPHP框架实现的MySQL数据库备份功能示例
May 24 PHP
PHP PDOStatement::setFetchMode讲解
Feb 03 PHP
php集成开发环境详解
Sep 24 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
福利彩票幸运号码自动生成器
2006/10/09 PHP
PHP删除非空目录的函数代码小结
2013/02/28 PHP
解读PHP中上传文件的处理问题
2016/05/29 PHP
PHP面试常用算法(推荐)
2016/07/22 PHP
JQuery slideshow的一个小问题(如何发现及解决过程)
2013/02/06 Javascript
JavaScript格式化日期时间的方法和自定义格式化函数示例
2014/04/04 Javascript
整理AngularJS中的一些常用指令
2015/06/16 Javascript
基于JavaScript短信验证码如何实现
2016/01/24 Javascript
jquery遍历table的tr获取td的值实现方法
2016/05/19 Javascript
JavaScript函数基础详解
2017/02/03 Javascript
JS实现JSON.stringify的实例代码讲解
2017/02/07 Javascript
浅谈js函数三种定义方式 &amp; 四种调用方式 &amp; 调用顺序
2017/02/19 Javascript
vue-resource调用promise取数据方式详解
2017/07/21 Javascript
用vue写一个仿简书的轮播图的示例代码
2018/03/13 Javascript
jquery绑定事件 bind和on的用法与区别分析
2020/05/22 jQuery
Python实现递归遍历文件夹并删除文件
2016/04/18 Python
python中reload(module)的用法示例详解
2017/09/15 Python
对Python中gensim库word2vec的使用详解
2018/05/08 Python
Python中的函数式编程:不可变的数据结构
2018/10/08 Python
python3使用print打印带颜色的字符串代码实例
2019/08/22 Python
使用PyTorch实现MNIST手写体识别代码
2020/01/18 Python
Python类如何定义私有变量
2020/02/03 Python
Python进程Multiprocessing模块原理解析
2020/02/28 Python
使用Keras构造简单的CNN网络实例
2020/06/29 Python
如何向scrapy中的spider传递参数的几种方法
2020/11/18 Python
Python实现Word文档转换Markdown的示例
2020/12/22 Python
美国男士内衣品牌:Tommy John
2017/12/22 全球购物
博朗(Braun)俄罗斯官方商店:德国小家电品牌
2019/09/24 全球购物
Oral-B荷兰:牙医最推荐的品牌
2020/02/25 全球购物
存储过程和sql语句的优缺点
2014/07/02 面试题
求职自荐书范文
2013/12/04 职场文书
小学生节约用水倡议书
2014/05/15 职场文书
绿色环保口号
2014/06/12 职场文书
讲党性心得体会
2014/09/03 职场文书
诚信承诺书
2015/01/19 职场文书
立项申请报告范本
2015/05/15 职场文书