带有imagemagick的动画gif中的多种透明颜色?

问题描述

正在寻找一种方法,可以使用 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

解决方法

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

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

enter image description here

,

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

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