【问题标题】:Imagemagick "Flatten" frames in animated GIF while maintaining global color tableImagemagick 在动画 GIF 中“展平”帧,同时保持全局颜色表
【发布时间】:2016-09-26 02:27:50
【问题描述】:

我有一个带有 256 字节全局颜色表的动画 GIF。后面的帧不会延伸到完整的画布尺寸,因此它们会“修补”画布区域。较早图层上的图形仅被较晚图层上的图形部分遮挡。我的目标是“展平”图像,以便我有一个 1 帧/非动画 gif,它显示为动画 GIF 在其动画的最后一帧上(在绘制完所有帧之后)。我可以使用 imagemagick 获得想要的结果:

convert animation.gif -flatten flattened.gif

这会创建一个名为 flattened.gif 的单帧 GIF,它看起来就像 animation.gif 在它的最后一帧上所做的那样。太好了!

我的问题是 flattened.gif 有一个不同的(顺便说一下更小的)全局颜色表。我有一些不寻常的特定于应用程序的要求,这意味着我需要保持扁平化 GIF 的全局颜色表与源动画 GIF 的全局颜色表相同。

非常感谢任何建议。

【问题讨论】:

  • 尝试使用convert original.gif -unique-colors palette.gif 从原始GIF 中提取颜色,然后使用convert final.gif -remap palette.gif result.gif 将该调色板应用于最终图像。你可能想要也可能不想抖动。
  • 完美。谢谢马克!
  • 太棒了!很高兴它为您的目的解决了 - 祝您的项目好运。!我会将它添加为正确的答案,这样每个人都可以看到它而无需费力地通过 cmets,并且如果您考虑接受它,ImageMagick 问题的回答率就会正确表示。

标签: imagemagick


【解决方案1】:

尝试使用以下命令从原始 GIF 中提取颜色并将它们保存为 palette.gif

convert original.gif -unique-colors palette.gif 

然后,当您拥有最终图像时,将原始调色板应用回它:

convert final.gif -remap palette.gif result.gif

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-28
    • 2017-12-11
    • 2021-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多