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+java实现自动新闻滚动窗口
Oct 09 PHP
php self,$this,const,static,-&amp;gt;的使用
Oct 22 PHP
ThinkPHP利用PHPMailer实现邮件发送实现代码
Sep 26 PHP
测试php连接mysql是否成功的代码分享
Jan 24 PHP
php使用smtp发送支持附件的邮件示例
Apr 13 PHP
PHP实现的json类实例
Jul 28 PHP
php实现转换html格式为文本格式的方法
May 16 PHP
php rsa 加密,解密,签名,验签详解
Dec 06 PHP
PHP缩略图生成和图片水印制作
Jan 07 PHP
PHP 年月日的三级联动实例代码
May 24 PHP
[原创]PHP实现生成vcf vcard文件功能类定义与使用方法详解【附demo源码下载】
Sep 02 PHP
php 处理png图片白色背景色改为透明色的实例代码
Dec 10 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的输入输出流
2007/02/14 PHP
使用VisualStudio开发php的图文设置方法
2010/08/21 PHP
php安全开发 添加随机字符串验证,防止伪造跨站请求
2013/02/14 PHP
利用curl抓取远程页面内容的示例代码
2013/07/23 PHP
PHP SPL标准库之文件操作(SplFileInfo和SplFileObject)实例
2015/05/11 PHP
php实现只保留mysql中最新1000条记录
2015/06/18 PHP
PHP面向对象五大原则之单一职责原则(SRP)详解
2018/04/04 PHP
JavaScript Tips 使用DocumentFragment加快DOM渲染速度
2010/06/28 Javascript
Js base64 加密解密介绍
2013/10/11 Javascript
JS判断客户端是手机还是PC的2个代码
2014/04/12 Javascript
$.extend 的一个小问题
2015/06/18 Javascript
Nodejs初级阶段之express
2015/11/23 NodeJs
JavaScript实现翻页功能(附效果图)
2017/02/16 Javascript
jQuery+Ajax实现用户名重名实时检测
2017/06/01 jQuery
超级简易的JS计算器实例讲解(实现加减乘除)
2017/08/08 Javascript
JavaScript中关于class的调用方法
2017/11/28 Javascript
Python通过调用mysql存储过程实现更新数据功能示例
2018/04/03 Python
Python 打印中文字符的三种方法
2018/08/14 Python
pyhton中__pycache__文件夹的产生与作用详解
2019/11/24 Python
keras 获取某层输出 获取复用层的多次输出实例
2020/05/23 Python
Python如何实现大型数组运算(使用NumPy)
2020/07/24 Python
Python爬虫使用bs4方法实现数据解析
2020/08/25 Python
利用Storage Event实现页面间通信的示例代码
2018/07/26 HTML / CSS
美国销售第一的智能手机和平板电脑保护壳:OtterBox
2017/12/21 全球购物
手工制作的意大利太阳镜和光学元件:Illesteva
2019/01/19 全球购物
广州盈通面试题
2015/12/05 面试题
小学生打架检讨书
2014/01/26 职场文书
公司总经理岗位职责范本
2014/08/15 职场文书
学校运动会广播稿
2014/10/11 职场文书
幼儿园法制宣传日活动总结
2014/11/01 职场文书
高三语文复习计划
2015/01/19 职场文书
地震慰问信
2015/02/14 职场文书
关于召开会议的通知
2015/04/15 职场文书
民政局未婚证明
2015/06/15 职场文书
python 爬取哔哩哔哩up主信息和投稿视频
2021/06/07 Python
MySQL Server层四个日志的实现
2022/03/31 MySQL