将裁剪蒙版应用于具有透明背景的动画 gif
Apply cropping mask to the animated gif with a transparent background
我有一些透明背景的动画 GIF,例如:
https://i.imgur.com/5yRvEDc.gif
我还有一个遮罩 PNG 文件,其中一些像素是透明的,我想将其应用于 GIF,例如
https://i.imgur.com/8Ly6Exg.png
我希望蒙版上的所有透明像素在 GIF 上(对于每一帧)都是透明的 - 就像下图一样,但是动画并保持原始 GIF 透明像素。
https://i.imgur.com/08kIjse.png
如何用ImageMagick实现?
这是在 ImageMagick 6 中执行此操作的一种方法。首先将蒙版与动画的 Alpha 通道相乘。然后将新的 alpha 通道与动画一起放回去。
我注意到您的蒙版在 PNG 的 alpha 通道中有一个圆圈,下面的图像是全黑的。所以蒙版图像的重要部分是它的 alpha 通道。
动画:
掩码:
convert lips.gif -coalesce -alpha extract null: \( lips_mask.png -alpha extract \) -compose multiply -layers composite alpha.gif
convert lips.gif null: alpha.gif -alpha off -compose copy_opacity -layers composite lips_masked.gif
如果使用 ImageMagick 7,请将 convert
更改为 magick
。
我有一些透明背景的动画 GIF,例如:
https://i.imgur.com/5yRvEDc.gif
我还有一个遮罩 PNG 文件,其中一些像素是透明的,我想将其应用于 GIF,例如
https://i.imgur.com/8Ly6Exg.png
我希望蒙版上的所有透明像素在 GIF 上(对于每一帧)都是透明的 - 就像下图一样,但是动画并保持原始 GIF 透明像素。
https://i.imgur.com/08kIjse.png
如何用ImageMagick实现?
这是在 ImageMagick 6 中执行此操作的一种方法。首先将蒙版与动画的 Alpha 通道相乘。然后将新的 alpha 通道与动画一起放回去。
我注意到您的蒙版在 PNG 的 alpha 通道中有一个圆圈,下面的图像是全黑的。所以蒙版图像的重要部分是它的 alpha 通道。
动画:
掩码:
convert lips.gif -coalesce -alpha extract null: \( lips_mask.png -alpha extract \) -compose multiply -layers composite alpha.gif
convert lips.gif null: alpha.gif -alpha off -compose copy_opacity -layers composite lips_masked.gif
如果使用 ImageMagick 7,请将 convert
更改为 magick
。