PHP如何判断一个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'

时间: 2024-12-27 21:19:44

PHP如何判断一个gif图片是否为动态图片的相关文章

PHP如何判断一个gif图片是否为动态图片(动画)

如何使用PHP来判断一个gif图片是否为动态图片(动画)?首先想到的是使用getimagesize()函数来看type值,发现都是gif,所以这个办法是不可行的.下面是作者在网上看到的一个函数,用来判断gif是否为动图的.贴出来和大家分享. /* * 判断图片是否为动态图片(动画) */ function isAnimatedGif($filename) { $fp=fopen($filename,'rb'); $filecontent=fread($fp,filesize($filename)

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

本文实例讲述了PHP判断一个gif图片是否为动态图片的方法.分享给大家供大家参考.具体方法如下: 如何使用PHP来判断一个gif图片是否为动态图片(动画)?首先想到的是使用getimagesize()函数来看type值,发现都是gif,所以这个办法是不可行的.下面是作者在网上看到的一个函数,用来判断gif是否为动图的.贴出来和大家分享 例子如下: 复制代码 代码如下: /*  * 判断图片是否为动态图片(动画)  */ function isAnimatedGif($filename) {  $

图片压缩-如何判断一个JPEG2000的文件中的每一个packet?

问题描述 如何判断一个JPEG2000的文件中的每一个packet? 最近在研究JPEG2000的图像格式,我发现一个问题.现在到这里来问问一下大神. 从理论上将,JPEG2000的image只要一些最基本的数据不丢失的话,其它部分的数据丢失的话,是不会影响太大的(除了resolution和qunlity的). 但是现在我想知道的问题是,我手头里有一个JPEG2000的格式的文件,我该如何知道它的哪一部分的数据是可以丢掉的啊? 解决方案 http://wenku.baidu.com/link?u

图片-java编写如何判断一个正整数是否是fibonacci数列中的数?

问题描述 java编写如何判断一个正整数是否是fibonacci数列中的数? 解决方案 先产生一个1~10000内的费波拉契数列表,然后用如下算法http://rosettacode.org/wiki/Zeckendorf_number_representation 解决方案二: http://bbs.csdn.net/topics/120067216 解决方案三: 先计算费波拉契系列直到值等于给定的数据或者超出给定的数值,如果计算到某个n的值等于给定的数,说明是费波拉契数,否则超过给定的值说明

不懂技术如何判断一个页面的开发复杂度

做为一名苦逼前端码农,写给一起奋战的产品经理们. 最近的聊天中产品经理说:"我不懂技术,所以当初也判断不好这个页面在技术实现上有多复杂".于是想起来有好几次: 有好几次,在产品经理眼里很简单的需求,可最后出来的技术方案非常复杂,开发工作量特别大,导致整个项目不得不重新评估. 有好几次,朋友问我能不能给他做个小游戏,很简单的网页小游戏哦,像QQ农场那样的. 有时候在想有没有一种简单的方法,让不懂技术的人能判断一个页面的前端复杂度,于是有了这篇文章.希望能让前端码农和产品经理能更好的互相理

通过freemarker生成一个word,解决生成的word用wps打开有问题的问题,解决出word时中文文件名乱码问题,解决打开出word时打开的word出现问题的问题,出图片,解决动态列表

 通过freemarker制作word比较简单 步骤:制作word模板.制作方式是:将模板word保存成为xml----在xml的word模板中添加相应的标记----将xml的word文件的后缀名改成ftl文件(要注意的是生成xml格式要是2003格式的xml,也就是说拿到的word模板得是2003格式的,否则用wps打开word将会出现问题)   详细步骤如下: 模板制作(将要动态显示的数据打上标记,这个标记是freemarker中的EL标记,要注意的是,要控制值为空的情况,下面${(si

判断一个关键词竞争激烈程度的七个维度

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 选关键词通常是seo工作展开的第一步,选择合适自己的关键词也是seo成功的重要因素,因为选的关键词太简单,没人搜索seo的工作就没有意义,选的关键词如果太激烈不符合自身的势力,seo工作做的太好可能也是徒劳,那么判断一个关键词的竞争激烈程度呢,主要从下面这七个方面: 1.该关键词的竞价数.参与竞价的网站越多,说明这个关键词做的人越多,竞价数是

用c++写了一个函数判断一个数组是否包含另一个数组 但是总是返回-1 请大神们帮忙看看错在哪里

问题描述 用c++写了一个函数判断一个数组是否包含另一个数组 但是总是返回-1 请大神们帮忙看看错在哪里 int substr_index( const char substr[], const char str[]) { int flag = -1; int sizeOfSubstr = sizeof(substr)/sizeof(char); int sizeOfStr = sizeof(str)/sizeof(char); for (int i = 0; i < sizeOfStr; i+

html javascript: 用JavaScript判断一个html元素是否存在的几种方法

用javascript判断一个html元素是否存在的五种方法:   1. 判断表单元素是否存在 if("periodPerMonth" in document.theForm){ return true; }else{ return false; } 2. 判断页面元素是否存在 if(document.getElementById("XXX")){ //存在 } 3. 判断表单元素是否存在 if(document.theForm.periodPerMonth){ /