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

时间:2016-07-21 22:58:10

标签: php imagemagick gradient imagick blending

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

我要拍照: Image to blend at left Image to blend at right

我希望将这两张图片混合在一起,使红色图片位于左侧,蓝色图片位于右侧,并具有渐变混合效果。

到目前为止,我曾经在蓝色上应用渐变蒙版,例如: Blue image mask

蓝色图像蒙版

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

Gradient Blending Test

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

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

你知道一个很好的方法吗?

谢谢!

PS:资源: Red picture 红色图片

Blue picture 蓝色图片

Mask black&white 蓝色图片的面具(黑色和白色)

Mask transarent&white 蓝色图片的面具(透明和白色)

1 个答案:

答案 0 :(得分:2)

  

你知道一个很好的方法吗?

我建议从基本图像中隔离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

Base composite

使用提取的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 channel composite

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

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

Finial composite