4

我正在尝试使用 Python Wand 实现以下 ImageMagick 命令:

convert red_image.png  green_image.png  write_mask.png -composite masked_composite.png

这是图像中的示例:

在此处输入图像描述

有什么提示吗?

更新:如果有人想知道,这是我的解决方案。注意:不优雅,但有效。

bash_command = "convert "+str(red_image.png)+" "+str(green_image.png)+" write_mask.png -   composite "+str(red_image.png)+str(green_image.png)+".jpg"
os.system(bash_command)
4

1 回答 1

0

解决方案是使用copy_opacity复合运算符,它采用黑白源图像并将目标图像的 alpha 通道替换为其内容。

apply_mask是我在项目中使用的功能:

def apply_mask(image, mask, invert=False):
    image.alpha_channel = True
    if invert:
        mask.negate()
    with Image(width=image.width, height=image.height, background=Color("transparent")) as alpha_image:
        alpha_image.composite_channel(
            "alpha",
            mask,
            "copy_opacity",
            0, 0)
        image.composite_channel(
            "alpha",
            alpha_image,
            "multiply",
            0, 0)

首先,我确保我们要应用蒙版的图像具有 Alpha 通道,并检查我们是否要反转蒙版。然后我们使用蒙版替换新透明图像的 alpha 通道。我们这样做是为了将这个生成的 Alpha 通道与目标图像上已经存在的任何 Alpha 通道结合起来。如果我们在没有这个中间步骤的情况下直接将蒙版应用copy_opacity到我们的图像,它将替换它的 alpha 通道(而不是合并它们),破坏它的任何原始 alpha 通道数据。

于 2017-03-10T05:02:49.647 回答