【问题标题】:multiple transparent colors in animated gif with imagemagick?使用imagemagick的动画gif中的多种透明颜色?
【发布时间】:2021-09-11 00:58:11
【问题描述】:

正在寻找一种方法来使用 imagemagick 使动画 gif 中的多种颜色(在本例中为 4,但将来是任意颜色)透明。我知道我可以使用多个 -transparent 命令,但是当动画 gif 被合成时,它会导致一些奇怪的合成,之前的帧保持渲染而不是清除画布。如果只将一种颜色设为透明,则不会发生这种情况。

例如,这是原始图像:

animated gif 1

这是我的代码的结果。

converted animated gif

4 种背景颜色已成功透明化,但现在与透明区域直接接触的动画部分在每一帧后都不会被清除。

这是我的脚本:

/usr/local/bin/convert 'https://radblast.wunderground.com/cgi-bin/radar/WUNIDS_map?num=40&type=N0Q&mapx=400&mapy=240&brand=wui&delay=15&frame=0&scale=1&transx=0&transy=0&severe=0&smooth=0&centerx=400&centery=240&station=GRK&rainsnow=0&lightning=0&noclutter=0&showlabels=1&showstorms=0&rand=27081615' -transparent '#87876F' -transparent '#6C6C58' -transparent '#1C3575' -transparent '#162A5D' ~/Desktop/radar.gif

【问题讨论】:

    标签: shell imagemagick transparency gif animated-gif


    【解决方案1】:

    这在 ImageMagick 中适用于我。您需要指定 -dispose 背景。

    convert -dispose background anim.gif -transparent '#87876F' -transparent '#6C6C58' -transparent '#1C3575' -transparent '#162A5D' x.gif
    

    【讨论】:

    • 太棒了。谢谢!我还没有完全解决所有的 -dispose 选项,但这似乎可以解决问题。
    • 嗯...但现在正如我在您的示例中看到的那样,它将每一帧裁剪到前一帧的差异范围内。这很奇怪。我想知道是否有办法避免这种行为?
    • 抱歉,我忽略了这一点。我尝试了几件事,包括 -coalesce,但这没有帮助。我认为你应该在 Imagemagick GIT 论坛的github.com/ImageMagick/ImageMagick/issues 的问题部分发布这个问题
    • 别担心,我真的想通了!见下文。 -coalesce 使用适当的优化在最后重新组合帧。总的来说,感谢您在 ImageMagick 上所做的所有工作。
    • 干得好。我做了 -coalesce 但使用 -layers 优化,这不起作用。搞清楚 -layers 优化框架的工作做得很好。
    【解决方案2】:

    好的,这就是最终奏效的方法;使用 -coalesce 将动画分割成单独的帧并重新组合它们。

    convert ~/Desktop/radar.gif -coalesce -transparent '#87876F' -transparent '#6C6C58' -transparent '#1C3575' -transparent '#162A5D' -layers OptimizeFrame ~/Desktop/radar.gif
    

    【讨论】:

      猜你喜欢
      • 2023-03-03
      • 2013-01-19
      • 2013-02-15
      • 1970-01-01
      • 1970-01-01
      • 2016-12-27
      • 2015-12-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多