利用PHP怎么对gif图片进行判断

发布时间:2020-12-14 15:57:06

来源:亿速云

阅读:101

作者:Leah

这篇文章将为大家详细讲解有关利用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怎么对gif图片进行判断就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

php怎么实现显示gif图片,利用PHP怎么对gif图片进行判断相关推荐

  1. python图片-利用python进行识别相似图片(一)

    文章简介 在网上看到python做图像识别的相关文章后,真心感觉python的功能实在太强大,因此将这些文章总结一下,建立一下自己的知识体系. 当然了,图像识别这个话题作为计算机科学的一个分支,不可能 ...

  2. [emWin]利用内存设备加速GIF图片显示——2021.03

    本文为作者原创,如需转载请在醒目位置标明原始出处,并提供可访问的超链接. 效果 实现原理 emWin的GIF显示原理是用户程序调用GUI_GIF_DrawSub()绘制函数一帧一帧的解码和显示,并且每 ...

  3. [emWin]利用内存设备加速PNG图片显示——2021.03

    本文为作者原创,如需转载请在醒目位置标明原始出处,并提供可访问的超链接. 上一篇博客中讲了[emWin]利用内存设备加速GIF图片显示,那么这一篇来讲一下同样的方法加速PNG图. 实现原理 emWin ...

  4. A2-1 利用stb_image.h来进行图片的绘制与显示

    目录 (一)读取图片 (二)绘制图片 TIP1:Debug: (三)stb_image.h库下载与使用 使用教程: TIP2:gittee源代码 如有问题请就指出,谢谢! stb_image 是一个简 ...

  5. Android中关于Volley的使用(四)利用NetworkImageView来加载图片

    在使用Volley来从网络获取图片的时候,我们前面介绍了ImageRequest的使用,而其实Volley还提供了一个NetworkImageView类.利用这个类,我们可以更有效率地去从网络去获取图 ...

  6. word转换为html为什么图片显示不了,word插入html 转换为docx图片不显示问题

    场景描述 使用mht格式利用freemark将网页上动态输入的图片搞到mht里面,转换为docx格式.其中图片是使用vshape标签展示(网上搜到的),将图片转换为base64写入到mht文件内(具体 ...

  7. 利用tensorflow训练自己的图片数据集——数据准备

    昨天实现了一个简单的CNN网络.用了MNIST数据集,虽然看来对这个数据集用的很多,但是真正这个数据集是怎么在训练的时候被调用的,以及怎么把它换成自己的数据集都是一脸懵. 直接附上链接:MNIST数据 ...

  8. 利用Word邮件合并插入图片

    利用Word邮件合并插入图片 Word的邮件合并功能非常不错,其基本思想就是定义一个Word模板,再选择一个数据表格,然后将数据表格中的每条数据填入模板中形成一个页面,并将根据所有数据生成的页面组合起 ...

  9. 完整实现利用tensorflow训练自己的图片数据集

    经过差不多一个礼拜的时间的学习,终于把完整的一个利用自己爬取的图片做训练数据集的卷积神经网络的实现(基于tensorflow) 目录 总体思路 第三部分:预处理 第四部分:网络模型 第五部分:训练 2 ...

  10. iosxib 设置图片_ios8.0利用 LaunchScreen.xib添加启动图片

    今天没事,回顾下之前的项目,看到有个LaunchScreen.xib 文件,这货在xcode6创建项目就有了,这是 Xcode6/iOS8的新功能,也就是说,在LaunchScreen.xib中添加启 ...

最新文章

  1. 【每日一算法】有效的括号
  2. android 自定义图形,Android自定义View之图形图像(模仿360的刷新球自定
  3. python培训Day1 随笔
  4. mysql(connector/ODBC)
  5. App设计灵感之十二组精美的手机闹钟App设计案例
  6. Linux帮助信息获取
  7. Function接口练习之按照指定要求操作数据
  8. python多行注释以三个英文_Python中多行注释可以包含在三对英文半角单引号('''''')或三对英文半角双引号(\\\...
  9. Foxmail新建自动标签功能在哪 如何给Foxmail收件人邮件设置自动标签
  10. [HBase_3] HBase 命令
  11. c语言如何制作多线程序,c语言中如何创建多线程。最好有一个例子,谢谢!!...
  12. 每日一句090516
  13. Axure9桌面无法显示图标
  14. 基于javaweb+jsp的健康体检信息管理系统(JavaWeb JSP MySQL Servlet SSM SpringBoot Bootstrap)
  15. app上架应用宝流程
  16. 详解 物理四大神兽————薛定谔的猫
  17. uniapp 下载视频到本地
  18. 劝学篇翻译软件测试,汪洙《神童诗劝学篇》原文与译文
  19. 什么是开环控制,闭环控制?它们的根本区别是什么
  20. 知识图谱架构(Knowledge Graph)

热门文章

  1. idea取消大小写自动提示
  2. Asp.net Core 一个实用的自定义TagHelpers
  3. linux DHCP安装和测试
  4. Java之IO,BIO,NIO,AIO知多少?【请按正文网址阅读】
  5. Java 序列化与反序列化详解
  6. ScheduledThreadPoolExecutor部分源码学习
  7. CISCO ACL配置(目前)
  8. Java 基础 之 变量
  9. [CF617E]XOR and Favorite Number/[CQOI2018]异或序列
  10. 如何用通俗易懂的语言解释需求变更带来的项目影响