问题描述
正在寻找一种方法,可以使用 imagemagick 使动画 gif 中的多种颜色(在本例中为 4,但将来是任意颜色)透明。我知道我可以使用多个 -transparent 命令,但是当合成动画 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¢erx=400¢ery=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
,
好的,这是最终有效的方法;使用 -coalesce 将动画拆分为单独的帧并重新组合它们。
convert ~/Desktop/radar.gif -coalesce -transparent '#87876F' -transparent '#6C6C58' -transparent '#1C3575' -transparent '#162A5D' -layers OptimizeFrame ~/Desktop/radar.gif