如何以编程方式检查GIF图像是否已设置动画?

2024-06-18 11:30:14 发布

您现在位置:Python中文网/ 问答频道 /正文

这是一个链接到another question我问的关于同一个项目我正在工作。我想这一点背景知识会有帮助的。

对于那些懒得打开新标签来回答这个问题的人,我在这里总结一下我要做的:我已经从4scrape下载了大约250000张图片,我想浏览一下gif,找出哪些是动画的。我需要通过程序来完成这项工作,因为我真的感觉不到我的灵魂(或者我和我女朋友的关系)可以通过看4个汉字的几千个礼物来判断它们是否是动画的。如果你知道4chan的性质,那么你就知道图像的性质(即“tits或GTFO”)。

我知道PHP和Python,但愿意探索其他解决方案。在Windows上工作的独立软件也可以工作。

非常感谢!


Tags: 项目程序关系链接another图片动画标签
3条回答

使用Python和PIL

from PIL import Image
gif = Image.open('path.gif')
try:
    gif.seek(1)
except EOFError:
    isanimated = False
else:
    isanimated = True

如果您在Linux(或任何带有ImageMagick的系统)上,则可以使用一行shell脚本和identify程序:

identify *.gif | fgrep '.gif[1] '

我知道你说你更喜欢PHP和Python,但你也说你愿意探索其他解决方案。:)

我从来没见过一个程序能告诉你这个。但是GIF是一种块结构格式,您可以检查文件中是否存在指示动画GIF的块。

维基百科的一篇文章指出:在偏移量0x30D处,GIF文件中的一个应用程序扩展名(即:3字节的幻数21 FF 0B)块,然后是幻数4E 45 54 53 43 41 50 45 32 9at偏移量0x310,表示文件的其余部分包含多个图像,它们应该是动画的。

实际上,维基百科的文章解释得更好,下面提到的文档格式在维基百科的文章中得到了扩展。

所以您可以使用Python编写的程序解析GIFs(多年前我使用C解析GIFs,主要是移动文件指针和读取字节)。确定AE是否具有正确的3字节ID,后跟9字节幻数。

http://en.wikipedia.org/wiki/Graphics_Interchange_Format#Animated_.gif

另见http://www.martinreddy.net/gfx/2d/GIF87a.txt

另见http://www.martinreddy.net/gfx/2d/GIF89a.txt

对不起,我能为你做的最好。

相关问题 更多 >