获取GIF图片的第一帧,而无需下载所有其他帧

10

我想从网络上获取一个GIF图片,但我发现如果下载整个GIF图片将会导致大量的网络流量。

我能否只获取GIF图片的第一帧而不下载所有其他帧?


我很想知道为什么会对一个完全合理的问题进行负面投票的原因。 - Octavian Helm
使用此链接中的库 https://github.com/dragon66/icafe,只需一行代码即可调用:ImageIO.getReader(ImageType.GIF).getFrameAsBufferedImage(InputStream is) 或 ImageIO.getReader(ImageType.GIF).read(InputStream is)。返回类型将是Java BufferedImage。 - dragon66
2个回答

1
9年6个月后,现在是帮忙的完美时机。 可以使用ImageMagick命令完成此操作:
magick mogrify -format png *.gif[0]

在包含文件的文件夹目录中使用控制台。


0

嗯,我没有找到现成的解决方案,但你可以这样做(这会涉及一些“低级”技巧):

根据有关GIF的维基百科,动画gif文件可以分割成帧,并且帧的结尾可以很容易地识别。因此,您需要将GIF头、屏幕信息、动画信息读入缓冲区,下载第一帧并附加类似于GIF已结束的信息(“3B”遵循维基文章)。如果您将此数据复制到单独的缓冲区中,则可以在不重新下载第一帧的情况下继续整个文件的下载。

此外,您还可以编辑标题信息,将第一帧格式化为静态gif。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接