php判断GIF图片是否为动画的方法

2015-01-24信息快讯网

这篇文章主要介绍了php判断GIF图片是否为动画的方法,需要的朋友可以参考下

本文介绍了PHP判断GIF图片是动画的方法,具体步骤如下:

首先,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'不是动画';
}
?>

这段代码还是可以再优化的:

因为实际上 chr(0×21).chr(0xff).chr(0×0b).'NETSCAPE2.0' 只在文件头部出现,可以 echo 来看看 ,但不是最头部,是在头部的某一个位置,所以,严格来说需要读取一部分文件,但不用全部,这样可以加快速度和节省内存。

程序可改写如下:

function check_animation($image_file){
$fp = fopen($image_file, 'rb');
$image_head = fread($fp,1024);
fclose($fp);
return preg_match("/".chr(0x21).chr(0xff).chr(0x0b).'NETSCAPE2.0'."/",$image_head) ? true : false;
}

测试发现,读取1024字节足够了,因为此时读取的数据流中正好包含了 chr(0×21).chr(0xff).chr(0×0b).'NETSCAPE2.0'

php实现微信公众平台账号自定义菜单类
php获取CSS文件中图片地址并下载到本地的方法
PHP间隔一段时间执行代码的方法
ThinkPHP采用原生query实现关联查询left join实例
php面象对象数据库操作类实例
PHP图片处理之图片背景、画布操作
PHP图片处理之使用imagecopyresampled函数实现图片缩放例子
PHP判断一个gif图片是否为动态图片的方法
PHP图片处理之使用imagecopyresampled函数裁剪图片例子
ThinkPHP做文字水印时提示call an undefined function exif_imagetype()解决方法
php缩放gif和png图透明背景变成黑色的解决方法
PHP错误Warning: Cannot modify header information - headers already sent by解决方法
PHP提示Cannot modify header information - headers already sent by解决方法
PHP基于php_imagick_st-Q8.dll实现JPG合成GIF图片的方法
Yii调试SQL的常用方法
ThinkPHP3.2.2的插件控制器功能简述
PHP 只允许指定IP访问(允许*号通配符过滤IP)
php中出现空白页的原因及解决方法汇总
php之Smarty模板使用方法示例详解
高性能PHP框架Symfony2经典入门教程
php实现批量压缩图片文件大小的脚本
PHP远程采集图片详细教程
PHP使用GIFEncoder类处理gif图片实例
ThinkPHP模板IF标签用法详解
PHP使用GIFEncoder类生成gif动态滚动字幕
PHP使用GIFEncoder类生成的GIF动态图片验证码
PHP把JPEG图片转换成Progressive JPEG的方法
使用ThinkPHP+Uploadify实现图片上传功能
PHP基于GD库的缩略图生成代码(支持jpg,gif,png格式)
PHP的一个完美GIF等比缩放类,附带去除缩放黑背景
php 获取SWF动画截图示例代码
©2014-2024 dbsqp.com