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 相关文章推荐
MySQL连接数超过限制的解决方法
Jul 17 PHP
php的mkdir()函数创建文件夹比较安全的权限设置方法
Jul 28 PHP
php实现基于微信公众平台开发SDK(demo)扩展的方法
Dec 22 PHP
在PHP站点的页面上添加Facebook评论插件的实例教程
Jan 08 PHP
thinkphp多表查询两表有重复相同字段的完美解决方法
Sep 22 PHP
php简单读取.vcf格式文件的方法示例
Sep 02 PHP
PHP通过bypass disable functions执行系统命令的方法汇总
May 02 PHP
PHP判断函数是否被定义的方法
Jun 21 PHP
laravel 操作数据库常用函数的返回值方法
Oct 11 PHP
laravel 解决paginate查询多个字段报错的问题
Oct 22 PHP
Thinkphp 框架扩展之驱动扩展实例分析
Apr 27 PHP
关于PhpStorm设置点击编辑文件自动定位源文件的实现方式
Dec 30 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 采集书并合成txt格式的实现代码
2009/03/01 PHP
那些年一起学习的PHP(三)
2012/03/22 PHP
php中session与cookie的比较
2015/01/27 PHP
Yii2框架类自动加载机制实例分析
2018/05/02 PHP
ExtJS 设置级联菜单的默认值
2010/06/13 Javascript
JavaScript将Table导出到Excel实现思路及代码
2013/03/13 Javascript
浏览器兼容console对象的简要解决方案分享
2013/10/24 Javascript
显示今天的日期js代码(阳历和农历)
2014/09/30 Javascript
javascript实现鼠标拖动改变层大小的方法
2015/04/30 Javascript
AngularJS学习笔记之ng-options指令
2015/06/16 Javascript
深入了解JavaScript中的Symbol的使用方法
2015/07/28 Javascript
基于JS实现简单的样式切换效果代码
2015/09/04 Javascript
牛叉的Jquery——Jquery与DOM对象的互相转换及DOM的三种操作
2015/10/29 Javascript
AngularJS中的Directive自定义一个表格
2016/01/25 Javascript
使用NodeJs 开发微信公众号(三)微信事件交互实例
2016/03/02 NodeJs
JavaScript核心语法总结(推荐)
2016/06/02 Javascript
jQuery插件FusionCharts绘制的3D饼状图效果实例【附demo源码下载】
2017/03/03 Javascript
浅谈JS获取元素的N种方法及其动静态讨论
2017/08/25 Javascript
Electron中实现大文件上传和断点续传功能
2018/10/28 Javascript
vue.draggable实现表格拖拽排序效果
2018/12/01 Javascript
ES6箭头函数和扩展实例分析
2020/05/23 Javascript
[36:43]NB vs Optic 2018国际邀请赛小组赛BO1 B组加赛 8.19
2018/08/21 DOTA
python使用openpyxl库修改excel表格数据方法
2018/05/03 Python
深入flask之异步非堵塞实现代码示例
2018/07/31 Python
python3调用百度翻译API实现实时翻译
2018/08/16 Python
十行代码使用Python写一个USB病毒
2019/06/21 Python
Django 请求Request的具体使用方法
2019/11/11 Python
Python关于反射的实例代码分享
2020/02/20 Python
python爬取”顶点小说网“《纯阳剑尊》的示例代码
2020/10/16 Python
matplotlib事件处理基础(事件绑定、事件属性)
2021/02/03 Python
日本7net购物网:书籍、漫画、杂志、DVD、游戏邮购
2017/02/17 全球购物
销售工作人员的自我评价分享
2013/11/10 职场文书
大学毕业通用个人的求职信
2013/12/08 职场文书
博士毕业生自我鉴定范文
2014/04/13 职场文书
创业计划书之婴幼儿游泳馆
2019/09/11 职场文书
jquery插件实现代码雨特效
2021/04/24 jQuery