如何使用一个黑白图像在python中使用枕头将一个图像屏蔽为另一个图像?

如何使用一个黑白图像在python中使用枕头将一个图像屏蔽为另一个图像?,python,python-imaging-library,mask,Python,Python Imaging Library,Mask,我正在尝试使用黑白图像遮罩image1的某些区域,并使用枕头将其粘贴到python中的image2上。我尝试过使用“PIL.Image.composite(image1,image2,mask)”,但它不起作用,或者我做错了什么。 很抱歉,我没有代码了, 我剩下的唯一代码是 from PIL import Image, ImageEnhance, ImageOps, ImageDraw, ImageFilter import os avatars = [] for img in os.list

我正在尝试使用黑白图像遮罩image1的某些区域,并使用枕头将其粘贴到python中的image2上。我尝试过使用“PIL.Image.composite(image1,image2,mask)”,但它不起作用,或者我做错了什么。 很抱歉,我没有代码了, 我剩下的唯一代码是

from PIL import Image, ImageEnhance, ImageOps, ImageDraw, ImageFilter
import os
avatars = []

for img in os.listdir():
  if img.endswith(".png") is True:
    avatars.append(img)

#open the images
mask = image.open("./masks/roundmask.png")
avatar1 = Image.open(avatars[0]).resize((128,128))
avatar2 = Image.open(avatars[1]).resize((128,128))

"""
mask the image avatar1 using the mask image and paste it on top of avatar2
"""
end = Image.open("./template/image.png").paste(avatar1, (190,93)).paste(avatar2, (420,38))

end.save("./finished/end.png")


我只能猜测你是在尝试使用不兼容的图像尺寸(它们的尺寸都略有不同),还是模式错误。无论如何,从这两个输入图像和此掩码开始:

这就是您需要的:

#!/usr/bin/env python3

from PIL import Image

# Load images, discard pointless alpha channel, set appropriate modes and make common size
av1  = Image.open('avatar1.png').convert('RGB').resize((500,500))
av2  = Image.open('avatar2.png').convert('RGB').resize((500,500))
mask = Image.open('mask.png').convert('L').resize((500,500))

# Composite and save
Image.composite(av1,av2,mask).save('result.png')


顺便说一下,您可以使用ImageMagick在终端的命令行上执行相同的操作:

magick avatar1.png avatar2.png mask.png -composite result.png

关键词:Python、图像处理、PIL、枕头、合成、面具、遮罩、混合。

请更具体一些。什么不起作用。你试过什么?你的问题缺少两张头像图像,一张面具图像和预期的结果图像。竖起大拇指,这非常有用,我想知道在哪里可以找到像这样更清晰的教程。@JamesHardcoder我做了很多,你可以在PIL/枕头上看到我的答案,如下所示: