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中global和$GLOBALS[]的分析之一
Feb 02 PHP
PHP获取MSN好友列表类的实现代码
Jun 23 PHP
ThinkPHP实现动态包含文件的方法
Nov 29 PHP
正确的PHP匹配UTF-8中文的正则表达式
May 13 PHP
Zend Framework教程之Zend_Registry对象用法分析
Mar 22 PHP
PHP中使用OpenSSL生成证书及加密解密
Feb 05 PHP
如何用PHP做到页面注册审核
Mar 02 PHP
php类自动装载、链式操作、魔术方法实现代码
Jul 23 PHP
PHP静态延迟绑定和普通静态效率的对比
Oct 20 PHP
php实现有序数组旋转后寻找最小值方法
Sep 27 PHP
Laravel手动返回错误码示例
Oct 22 PHP
常见的5个PHP编码小陋习以及优化实例讲解
Feb 27 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来处理多个提交任务
2008/05/08 PHP
php 设计模式之 工厂模式
2008/12/19 PHP
JS中encodeURIComponent函数用php解码的代码
2012/03/01 PHP
PHP 二级子目录(后台目录)设置二级域名
2017/03/02 PHP
javascript比较文档位置
2008/04/08 Javascript
自定义jQuery选项卡插件实例
2013/03/27 Javascript
jQuery封装的获取Url中的Get参数示例
2013/11/26 Javascript
如何根据百度地图计算出两地之间的驾驶距离(两种语言js和C#)
2015/10/29 Javascript
WordPress中鼠标悬停显示和隐藏评论及引用按钮的实现
2016/01/12 Javascript
jQuery实现弹出带遮罩层的居中浮动窗口效果
2016/09/12 Javascript
AngularJS实现的根据数量与单价计算总价功能示例
2017/12/26 Javascript
Node.js之readline模块的使用详解
2019/03/25 Javascript
JS校验与最终登陆界面功能完整示例
2020/01/13 Javascript
简单了解JavaScript作用域
2020/07/31 Javascript
element 动态合并表格的步骤
2020/12/31 Javascript
Python 中开发pattern的string模板(template) 实例详解
2017/04/01 Python
基于python3 类的属性、方法、封装、继承实例讲解
2017/09/19 Python
Python获取二维矩阵每列最大值的方法
2018/04/03 Python
python实现七段数码管和倒计时效果
2019/11/23 Python
Django Xadmin多对多字段过滤实例
2020/04/07 Python
五分钟学会HTML5的WebSocket协议
2019/11/22 HTML / CSS
瑞士香水购物网站:Parfumcity.ch
2017/01/14 全球购物
定制iPhone和Macbook保护壳:Slick Case
2018/11/21 全球购物
Vita Fede官网:在意大利手工制作,在纽约市设计
2019/10/25 全球购物
德国购买门票网站:ADticket.de
2019/10/31 全球购物
汽车专业人才自我鉴定范文
2013/12/29 职场文书
二年级语文教学反思
2014/02/02 职场文书
读书小明星事迹材料
2014/05/03 职场文书
党支部群众路线整改措施思想汇报
2014/10/10 职场文书
酒店辞职信怎么写
2015/02/27 职场文书
试用期工作表现自我评价
2015/03/06 职场文书
2015年收银员个人工作总结
2015/04/01 职场文书
高二英语教学反思
2016/03/03 职场文书
2016中秋晚会开幕词
2016/03/03 职场文书
送给教师们,到底该如何写好教学反思?
2019/07/02 职场文书
Redis5之后版本的高可用集群搭建的实现
2021/04/27 Redis