将裁剪蒙版应用于具有透明背景的动画 gif

Posted

技术标签:

【中文标题】将裁剪蒙版应用于具有透明背景的动画 gif【英文标题】:Apply cropping mask to the animated gif with a transparent background 【发布时间】:2021-07-03 11:21:31 【问题描述】:

我有一些带有透明背景的动画 GIF,例如:

https://i.imgur.com/5yRvEDc.gif

我还有一个掩码 PNG 文件,其中一些像素是透明的,我想将其应用于 GIF,例如

https://i.imgur.com/8Ly6Exg.png

我希望蒙版上的所有透明像素在 GIF 上都是透明的(对于每一帧) - 就像下面的图片一样,但动画并保持原始 GIF 透明像素。

https://i.imgur.com/08kIjse.png

ImageMagick 是如何实现的?

【问题讨论】:

【参考方案1】:

这是 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的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PHP 使动画 gif 的背景透明?

CSS ONLY 动画绘制圆与边框半径和透明背景

检测具有透明背景的 UIImage 的裁剪矩形

纯色背景上的透明透明预加载器图像

使用 ImageMagick 创建的动画 gif 具有故障块颜色背景

图像处理-裁剪具有透明背景的png