【问题标题】:Getting the first frame of a GIF image without downloading all the other frames获取 GIF 图像的第一帧而不下载所有其他帧
【发布时间】:2012-03-19 14:01:28
【问题描述】:

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

我可以只获取 GIF 图像的第一帧而不下载所有其他帧吗?

【问题讨论】:

  • 我很想知道对一个完全有效的问题投反对票的原因。
  • 使用此链接中的库:github.com/dragon66/icafe,就像一行调用一样简单:ImageIO.getReader(ImageType.GIF).getFrameAsBufferedImage(InputStream is) 或 ImageIO.getReader(ImageType.GIF ).read(InputStream 是)。返回类型将是 Java BufferedImage。

标签: java android gif


【解决方案1】:

好吧,我还没有找到现成的解决方案,但你可以这样做(它会导致一些“低级”技巧):

按照wiki about GIFs,可以将动画gif文件拆分成帧,并且可以轻松识别帧结束。因此,您需要将 GIF 标题、屏幕信息、有关动画的信息读入缓冲区、下载第一帧并附加信息(如 GIF 结束)(wiki 文章后面的“3B”)。而且,如果您将此数据复制到单独的缓冲区中,您将能够继续整个文件下载,而无需重新下载第一帧。

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

【讨论】:

    【解决方案2】:

    9 年 6 个月后,正是出手相助的好时机。 这可以通过 ImageMagick 使用以下命令来完成:

    magick mogrify -format png *.gif[0]
    

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

    【讨论】:

      猜你喜欢
      • 2019-08-15
      • 2019-03-02
      • 2014-12-01
      • 2014-07-23
      • 2020-10-18
      • 2021-12-05
      • 2010-10-31
      • 1970-01-01
      • 2022-04-12
      相关资源
      最近更新 更多