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 相关文章推荐
基于数据库的在线人数,日访问量等统计
Oct 09 PHP
PHP运行模式的深入理解
Jun 03 PHP
discuz免激活同步登入代码修改方法(discuz同步登录)
Dec 24 PHP
PHP IDE phpstorm 常用快捷键
May 18 PHP
用php代码限制国内IP访问我们网站
Sep 26 PHP
php生成验证码函数
Oct 20 PHP
Laravel5权限管理方法详解
Jul 26 PHP
Laravel中日期时间处理包Carbon的简单使用
Sep 21 PHP
PHP递归实现快速排序的方法示例
Dec 18 PHP
php微信开发之关键词回复功能
Jun 13 PHP
php使用gearman进行任务分发操作实例详解
Feb 26 PHP
PHP var关键字相关原理及使用实例解析
Jul 11 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默认安装产生系统漏洞
2006/10/09 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
通过代码实例解析PHP session工作原理
2020/12/11 PHP
理解Javascript_14_函数形式参数与arguments
2010/10/20 Javascript
Javascript面象对象成员、共享成员变量实验
2010/11/19 Javascript
getAsDataURL在Firefox7.0下无法预览本地图片的解决方法
2013/11/15 Javascript
js处理php输出时间戳对不上号的解决方法
2014/06/20 Javascript
jQuery元素选择器用法实例
2014/12/23 Javascript
Javascript复制实例详解
2016/01/28 Javascript
AngularJS创建自定义指令的方法详解
2016/11/03 Javascript
PHP获取当前页面完整URL的方法
2016/12/02 Javascript
Kindeditor单独调用单图上传增加预览功能的实例
2017/07/31 Javascript
JS分页的实现(同步与异步)
2017/09/16 Javascript
javascript原生封装一个淡入淡出效果的函数测试实例代码
2018/03/19 Javascript
springMvc 前端用json的方式向后台传递对象数组方法
2018/08/07 Javascript
详解vue路由篇(动态路由、路由嵌套)
2019/01/27 Javascript
Vue自定义组件双向绑定实现原理及方法详解
2020/09/03 Javascript
[51:15]2014 DOTA2国际邀请赛中国区预选赛 Orenda VS LGD-GAMING
2014/05/22 DOTA
python数组过滤实现方法
2015/07/27 Python
利用python生成一个导出数据库的bat脚本文件的方法
2016/12/30 Python
[原创]教女朋友学Python3(二)简单的输入输出及内置函数查看
2017/11/30 Python
使用Python画股票的K线图的方法步骤
2019/06/28 Python
python使用 __init__初始化操作简单示例
2019/09/26 Python
如何解决tensorflow恢复模型的特定值时出错
2020/02/06 Python
python爬虫开发之Beautiful Soup模块从安装到详细使用方法与实例
2020/03/09 Python
查找适用于matplotlib的中文字体名称与实际文件名对应关系的方法
2021/01/05 Python
香港最新科技与优质家居产品购物网站:J SELECT
2018/08/21 全球购物
银行出纳岗位职责
2013/11/25 职场文书
资源环境与城市管理专业推荐信
2013/11/30 职场文书
硕士研究生个人求职信
2013/12/04 职场文书
两只小狮子教学反思
2014/02/05 职场文书
篮球比赛口号
2014/06/10 职场文书
土建施工员岗位职责
2014/07/16 职场文书
校园运动会广播稿
2014/10/06 职场文书
幼儿园六一主持词开场白
2015/05/28 职场文书
python 镜像环境搭建总结
2022/09/23 Python