我正在尝试使用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)
答案 0 :(得分:0)
解决方案是使用copy_opacity
composite operator,它采用黑白源图像,并将目标图像的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通道数据。