如何将动画 .gif 文件拆分为其组件帧?

Kri*_*per 53 image-processing

如何轻松拆分动画 .gif 文件?我想看到每一帧。

我真的不想将每一帧都导出到一个目录中。如果可能,我想在一个应用程序中单独查看它们。

这在 Linux 上可行吗?

roa*_*dmr 64

尝试用 The Gimp 打开它们;我相信它会打开每帧一层的动画 gif。

您说您不想将所有帧转储到目录中的文件中,但无论如何我都会告诉您如何操作 :) 安装 ImageMagick 或 graphicsmagick,然后:

对于 ImageMagick:

convert animation.gif target.png
Run Code Online (Sandbox Code Playgroud)

对于图形魔术:

gm convert animation.gif target.png
Run Code Online (Sandbox Code Playgroud)

它会将帧写入 target0.png,target1.png,... 等等。然后您可以进入该目录并运行eog,它会向您显示同一应用程序上的所有框架。当您不再需要框架时,只需rm target*.png.

  • GraphicsMagick 需要采用 `gm convert some-image.gif +adjoin some-image%d.png` 形式才能工作。或者,`gm convert some-image.gif -coalesce +adjoin some-image%d.png` 用于具有不同偏移量的不同大小的子帧。 (4认同)
  • imagemagick 太棒了!! (2认同)
  • imagemagic convert 对我来说失败了,因为似乎 gif 的每个图像都被表示为一个新的透明背景层,而 convert 给出了这些透明层:http://upload.wikimedia.org/wikipedia/commons/5/5d/AstarExample .gif (2认同)
  • 指定的 `convert` 缺少 `-coalesce` 选项,这是用户所期望的。 (2认同)

小智 52

如果各个框架都有透明区域并且相互叠加,您可以使用convert带有“ -coalesce”选项的命令来生成一组文件 target-0.png、target-1.png 等,每个文件都合并了之前的序列图片:

convert -coalesce animation.gif target.png
Run Code Online (Sandbox Code Playgroud)

  • 您可以通过以下方式指定输出文件名:`convert -coalesce animation.gif target.%04d.png` (5认同)
  • 应该注意的是(从 ImageMagick 版本 6.7.7 开始)似乎存在一些内存泄漏:**不要尝试使用长 `.gif` 截屏视频使用 `-coalesce`,它可能会消耗所有可用内存,并且可能会挂起整个系统。 (3认同)