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 正则 过滤html 的超链接
Jun 02 PHP
php 服务器调试 Zend Debugger 的安装教程
Sep 25 PHP
PHP 命令行参数详解及应用
May 18 PHP
php在项目中寻找代码的坏味道(综艺命名)
Jul 19 PHP
PHP中操作ini配置文件的方法
Apr 25 PHP
解析PHP中的内存管理,PHP动态分配和释放内存
Jun 28 PHP
PHP反射类ReflectionClass和ReflectionObject的使用方法
Nov 13 PHP
php实现RSA加密类实例
Mar 26 PHP
使用PHP进行微信公众平台开发的示例
Aug 21 PHP
PHP创建PowerPoint2007文档的方法
Dec 10 PHP
PHP strripos函数用法总结
Feb 11 PHP
PHP设计模式(四)原型模式Prototype实例详解【创建型】
May 02 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
递归列出所有文件和目录
2006/10/09 PHP
PHP中设置一个严格30分钟过期Session面试题的4种答案
2014/07/30 PHP
php查询操作实现投票功能
2016/05/09 PHP
PHP使用redis位图bitMap 实现签到功能
2019/10/08 PHP
javascript 实用的文字链提示框效果
2010/06/30 Javascript
理解JavaScript的prototype属性
2012/02/11 Javascript
jQuery旋转插件—rotate支持(ie/Firefox/SafariOpera/Chrome)
2013/01/16 Javascript
JS 按钮点击触发(兼容IE、火狐)
2013/08/07 Javascript
JS获取URL中参数值(QueryString)的4种方法分享
2014/04/12 Javascript
jquery通过扩展select控件实现支持enter或focus选择的方法
2015/11/19 Javascript
深入解析AngularJS框架中$scope的作用与生命周期
2016/03/05 Javascript
jQuery Dialog对话框事件用法实例分析
2016/05/10 Javascript
JS动态计算移动端rem的解决方案
2016/10/14 Javascript
扩展Bootstrap Tooltip插件使其可交互的方法
2016/11/07 Javascript
详解React-Todos入门例子
2016/11/08 Javascript
详解如何将angular-ui的图片轮播组件封装成一个指令
2017/05/09 Javascript
JS倒计时实例_天时分秒
2017/08/22 Javascript
关于Vue实现组件信息的缓存问题
2017/08/23 Javascript
jQuery基于cookie实现换肤功能实例
2017/10/14 jQuery
浅谈Vuex的状态管理(全家桶)
2017/11/04 Javascript
react-native使用leanclound消息推送的方法
2018/08/06 Javascript
vue2.0 使用element-ui里的upload组件实现图片预览效果方法
2018/09/04 Javascript
vue与django集成打包的实现方法
2019/11/11 Javascript
Angular value与ngValue区别详解
2019/11/27 Javascript
微信小程序实现音乐播放页面布局
2020/12/11 Javascript
Python基于回溯法子集树模板解决m着色问题示例
2017/09/07 Python
pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换实例
2018/08/02 Python
Django高级编程之自定义Field实现多语言
2019/07/02 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
2020/05/25 Python
菲律宾购物网站:Lazada菲律宾
2018/04/05 全球购物
编写用C语言实现的求n阶阶乘问题的递归算法
2014/10/21 面试题
HttpServlet类中的主要方法都有哪些?各自的作用是什么?
2014/03/16 面试题
民主生活会意见
2015/06/05 职场文书
用python批量解压带密码的压缩包
2021/05/31 Python
NGINX 权限控制文件预览和下载的实现原理
2022/01/18 Servers
台积电称即便经济低迷也没有降价的计划
2022/04/21 数码科技