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 相关文章推荐
动态网站web开发 PHP、ASP还是ASP.NET
Oct 09 PHP
一个数据采集类
Feb 14 PHP
发布一个迷你php+AJAX聊天程序[聊天室]提供下载
Jul 21 PHP
防止MySQL注入或HTML表单滥用的PHP程序
Jan 21 PHP
php 生成饼图 三维饼图
Sep 28 PHP
php统计文件大小,以GB、MB、KB、B输出
May 29 PHP
php数组添加与删除单元的常用函数实例分析
Feb 16 PHP
PHP基于工厂模式实现的计算器实例
Jul 16 PHP
PHP提取字符串中的手机号正则表达式怎么写
Jul 17 PHP
PHP排序算法之基数排序(Radix Sort)实例详解
Apr 21 PHP
PHP两个n位的二进制整数相加问题的解决
Aug 26 PHP
php写入mysql中文乱码的实例解决方法
Sep 17 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删除指定目录中的所有目录及文件的方法
2015/02/26 PHP
Symfony生成二维码的方法
2016/02/04 PHP
FireFox中textNode分片的问题
2007/04/10 Javascript
基于jquery的内容循环滚动小模块(仿新浪微博未登录首页滚动微博显示)
2011/03/28 Javascript
javascript:;与javascript:void(0)使用介绍
2013/06/05 Javascript
使用iojs的jsdom库实现同步系统时间
2015/04/20 Javascript
js控制元素显示在屏幕固定位置及监听屏幕高度变化的方法
2015/08/11 Javascript
localResizeIMG先压缩后使用ajax无刷新上传(移动端)
2015/08/11 Javascript
简单讲解jQuery中的子元素过滤选择器
2016/04/18 Javascript
JavaScript必知必会(二) null 和undefined
2016/06/08 Javascript
jQuery实现点击查看大图并以弹框的形式居中
2016/08/08 Javascript
深入学习jQuery中的data()
2016/12/22 Javascript
Bootstrap Tree View简单而优雅的树结构组件实例解析
2017/06/15 Javascript
通过构造函数实例化对象的方法
2017/06/28 Javascript
vue项目中引入noVNC远程桌面的方法
2018/03/05 Javascript
Vue实现背景更换颜色操作
2020/07/17 Javascript
Python运算符重载用法实例分析
2015/06/01 Python
Python使用bs4获取58同城城市分类的方法
2015/07/08 Python
python 时间戳与格式化时间的转化实现代码
2016/03/23 Python
Python 编码Basic Auth使用方法简单实例
2017/05/25 Python
python实现自动网页截图并裁剪图片
2018/07/30 Python
python实现集中式的病毒扫描功能详解
2019/07/09 Python
python虚拟环境完美部署教程
2019/08/06 Python
解决在pycharm运行代码,调用CMD窗口的命令运行显示乱码问题
2019/08/23 Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
2019/12/19 Python
Python Sphinx使用实例及问题解决
2020/01/17 Python
Python爬虫JSON及JSONPath运行原理详解
2020/06/04 Python
英国著名药妆店:Superdrug
2021/02/13 全球购物
材料成型专业个人求职信范文
2013/09/25 职场文书
总监职责范文
2013/11/09 职场文书
文明村镇申报材料
2014/05/06 职场文书
公安派出所所长四风问题个人对照检查材料
2014/10/04 职场文书
人民调解协议书范本
2014/10/11 职场文书
工作简历自我评价
2015/03/11 职场文书
如何使用php生成zip压缩包
2021/04/21 PHP
Matplotlib绘制混淆矩阵的实现
2021/05/27 Python