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 相关文章推荐
Optimizer与Debugger兼容性问题的解决方法
Dec 01 PHP
php入门教程 精简版
Dec 13 PHP
PHP 获取远程文件内容的函数代码
Mar 24 PHP
PHP自动识别字符集并完成转码详解
Aug 02 PHP
用PHP实现弹出消息提示框的两种方法
Dec 17 PHP
php缩小png图片不损失透明色的解决方法
Dec 25 PHP
PHP生成数组再传给js的方法
Aug 07 PHP
Zend Framework教程之配置文件application.ini解析
Mar 10 PHP
PHP中的print_r 与 var_dump 输出数组
Jun 13 PHP
PHP DB 数据库连接类定义与用法示例
Mar 11 PHP
laravel 自定义常量的两种方案
Oct 14 PHP
PHP的new static和new self的区别与使用
Nov 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 miniBB中文乱码问题解决方法
2008/11/25 PHP
thinkphp中memcache的用法实例
2014/11/29 PHP
PHP中if和or运行效率对比
2014/12/12 PHP
基于jQuery的星级评分插件
2011/08/12 Javascript
window.showModalDialog参数传递中含有特殊字符的处理方法
2013/06/06 Javascript
提高jQuery性能的十个诀窍
2013/11/14 Javascript
javascript实现获取cookie过期时间的变通方法
2014/08/14 Javascript
jQuery 1.9.1源码分析系列(十)事件系统之主动触发事件和模拟冒泡处理
2015/11/24 Javascript
JavaScript基于对象去除数组重复项的方法
2016/10/09 Javascript
ionic cordova一次上传多张图片(类似input file提交表单)的实现方法
2016/12/16 Javascript
详谈$.data()的用法和作用
2017/02/13 Javascript
解决Extjs下拉框不显示的问题
2017/06/21 Javascript
JavaScript基本语法_动力节点Java学院整理
2017/06/26 Javascript
使用JS组件实现带ToolTip验证框的实例代码
2017/08/23 Javascript
最实用的JS数组函数整理
2017/12/05 Javascript
使用JS实现导航切换时高亮显示的示例讲解
2018/08/22 Javascript
基于Angular中ng-controller父子级嵌套的相关属性详解
2018/10/08 Javascript
[36:37]2014 DOTA2华西杯精英邀请赛5 24 VG VS iG
2014/05/25 DOTA
[03:09]显微镜下的DOTA2第一期——带你走进华丽的DOTA2世界
2014/06/20 DOTA
[03:17]2016完美“圣”典风云人物:冷冷专访
2016/12/08 DOTA
Python网络编程使用select实现socket全双工异步通信功能示例
2018/04/09 Python
在unittest中使用 logging 模块记录测试数据的方法
2018/11/30 Python
Python编程快速上手——正则表达式查找功能案例分析
2020/02/28 Python
python dict乱码如何解决
2020/06/07 Python
python 如何上传包到pypi
2020/12/24 Python
HTML5标签与HTML4标签的区别示例介绍
2013/07/18 HTML / CSS
美国网上眼镜供应商:LEOTONY(眼镜、RX太阳镜和太阳镜)
2017/10/31 全球购物
写出SQL四条最基本的数据操作语句(DML)
2012/12/12 面试题
北京某公司的.net笔试题
2014/03/20 面试题
工程师求职简历的自我评价分享
2013/10/10 职场文书
民族学专业职业生涯规划范文:积跬步以至千里
2014/09/11 职场文书
2014党员学习兰辉先进事迹思想汇报
2014/09/17 职场文书
Nginx反向代理多个服务器的实现方法
2021/03/31 Servers
pytorch 一行代码查看网络参数总量的实现
2021/05/12 Python
Vue实现动态查询规则生成组件
2021/05/27 Vue.js
海弦WR-800F
2022/04/05 无线电