Php Imagick - 具有透明度的渐变混合图像

Php Imagick - Gradient blend images with transparency

我正在尝试制作两张(或更多)图像的渐变混合效果。 但问题是我的图像有透明度。

我必须要图片:

我想混合这两张图,左边是红色的,右边是蓝色的,混合渐变效果

直到现在,我习惯于在蓝色蒙版上应用渐变蒙版,例如:

蓝色图像蒙版

...然后把它放在红色的上面。这非常适合照片,但是当图像具有透明度时,我得到了这个:

所以这里我们可以看到蓝色图像的渐变混合,但是我们可以通过透明的蓝色边框看到红色的。 :(

我找不到制作适用于透明图像的良好渐变混合效果的解决方案。我正在使用 imagemagick(使用 PHP),但即使在 Gimp 或 Photoshop 上我也找不到解决方案...

你知道这样做的好方法吗?

谢谢!

PS:资源: 红色图片

蓝图

蓝图蒙版(黑白)

蓝图面具(透明&白色)

Do you know a good method to do that ?

我建议从基本图像中分离出 alpha 通道,然后将两个图像与蒙版合成。

# Disable alpha channel, and composite without alpha
convert red.png -alpha off red_base.png
convert blue.png -alpha off blue_base.png
convert blue_base.png black_mask.png -alpha Off \
        -compose CopyOpacity -composite \
        red_base.png -compose DstOver -composite base_out.png

对提取的 Alpha 通道重复上述操作。

convert red.png -alpha extract red_mask.png
convert blue.png -alpha extract blue_mask.png
convert blue_mask.png black_mask.png -alpha Off \
        -compose CopyOpacity -composite \
        red_mask.png -compose DstOver -composite mask_out.png

最后将生成的蒙版应用为新的 alpha 通道。

convert base_out.png  mask_out.png -alpha Off \
        -compose CopyOpacity -composite output.png