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

 更新时间:2014年11月19日 09:45:50   投稿:shichen2014  
这篇文章主要介绍了PHP判断一个gif图片是否为动态图片的方法,涉及针对图片字节流中包含数据字段的判断,具有不错的实用价值,需要的朋友可以参考下

本文实例讲述了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,js双版本

    将时间以距今多久的形式表示,PHP,js双版本

    依然从项目需求出发,些了这个函数,PHP版本写了一个Smarty的插件,只要简单的修改下函数名就能直接在PHP中调用了,同时,为了AJAX翻页时所获取JSON数据中的时间以同样的方式显示,因此又写了一个JS的版本
    2012-09-09
  • 深入理解curl类,可用于模拟get,post和curl下载

    深入理解curl类,可用于模拟get,post和curl下载

    本篇文章是对curl类,可用于模拟get,post和curl下载进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • 深入理解php底层之php生命周期

    深入理解php底层之php生命周期

    这篇文章主要介绍了深入理解php底层之php生命周期,对php底层感兴趣的同学,可以参考一下
    2021-04-04
  • php无限分类使用concat如何实现

    php无限分类使用concat如何实现

    这篇文章主要介绍了php无限分类使用concat是如何实现的,需要的朋友可以参考下
    2015-11-11
  • php获取远程文件大小

    php获取远程文件大小

    这篇文章主要介绍了php获取远程文件大小的方法,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • PHP 常用数组内部函数(Array Functions)介绍

    PHP 常用数组内部函数(Array Functions)介绍

    本章节我们还要学习一些其它常用的有关数组的内部函数:count,sizeof、sort、asort、ksort等等,感兴趣的朋友可以参考下哈,希望对大家有所帮助
    2013-06-06
  • PHP函数参数传递的方式整理

    PHP函数参数传递的方式整理

    在本篇文章里小编给大家整理的是关于PHP函数参数传递的方式整理内容,需要的朋友们可以参考下。
    2020-03-03
  • PHP系列学习之日期函数使用介绍

    PHP系列学习之日期函数使用介绍

    PHP有非常丰富的库资源,便于开发者很容易的处理一些业务。由于我们在项目中与日期接触最多,所以今天就从日期函数入手学习
    2012-08-08
  • 浅谈本地WAMP环境的搭建

    浅谈本地WAMP环境的搭建

    所谓的WAMP环境就是Windows+Apache+Mysql+PHP开发运行环境啦,这对于我们学习php开发来说是最基础的一步了,虽然说现在集成开发环境一抓一大把,但是作为基本功还是必须要学到手的。
    2015-05-05
  • 整理的一些实用WordPress后台MySQL操作命令

    整理的一些实用WordPress后台MySQL操作命令

    WordPress将其所有信息片段(包括文章、页面、评论、博客链接、插件设置等)存储在MySQL数据库中。 虽然WordPress用户可以通过网站后台编辑控制以上信息片段
    2013-01-01

最新评论