如何从保留帧尺寸的 GIF 文件中提取帧

Posted

技术标签:

【中文标题】如何从保留帧尺寸的 GIF 文件中提取帧【英文标题】:How to extract frames from a GIF file preserving frame dimensions 【发布时间】:2012-09-29 06:44:43 【问题描述】:

我有以下 GIF 图片文件:

我想使用这个 imagemagick 命令提取它的帧(使用 PGM 输出格式):

convert brocoli.gif out%05d.pgm

但每一帧都有不同的大小。

如何在保留原始 gif 文件大小的同时提取其帧?

【问题讨论】:

西兰花核磁共振成像? 是的! (lorem ipsum 文本) 我已经多次看过这个西兰花核磁共振成像了。令人着迷。 【参考方案1】:

使用-coalesce 选项:

convert -coalesce brocoli.gif out%05d.pgm

【讨论】:

这很好用!对于像我一样对此选项感到困惑的人,文档说Overlay each image in an image sequence according to its -dispose meta-data, to reproduce the look of an animation at each point in the animation sequence 我会在死灵术方面给你一个建议,乔.. @gipi 我不是 gif 或 imagemagick 专家,但我对 GIF 的理解是它是一系列相当独立的图像,其中序列中的每个图像可以是不同的大小。它们相互叠加以产生整体动画。这提供了一些压缩,因为不改变的图像部分不包含在每一帧中。根据您引用的文档,-coalesce 在导出之前对每个帧进行整体分层。【参考方案2】:

你可以使用 graphicsmagick:

gm convert Test.gif +adjoin Test_image%3d.png

gm convert Test.gif -coalesce +adjoin Test_image%3d.png.

【讨论】:

以上是关于如何从保留帧尺寸的 GIF 文件中提取帧的主要内容,如果未能解决你的问题,请参考以下文章

python 从动画GIF中提取帧,正确处理调色板和帧更新模式

用GIF的软件Screen to gif制作两帧动画

如何从 Java Swing 的第一帧开始一个 .gif 文件?

将 GIF 的所有帧显示为单个图像

使用 ffmpeg 实现 MP4 与 GIF 的互转

ffmpeg4版本,提取视频帧保存成ppm图片