Как я могу использовать черно-белое изображение, чтобы замаскировать изображение для другого изображения в python с помощью Подушки? - PullRequest
1 голос
/ 27 апреля 2020

Я пытаюсь использовать черно-белое изображение, чтобы замаскировать определенные области изображения1 и вставить его на изображение2 в python с помощью Подушки. Я пытался использовать «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")

avatar1

avatar2

маска

ожидаемый результат

1 Ответ

2 голосов
/ 29 апреля 2020

Я могу только догадываться, что вы либо пытались использовать несовместимые размеры изображения (они все немного отличаются друг от друга), либо вы ошиблись в режимах. В любом случае, начиная с этих 2 входных изображений и этой маски:

enter image description here

это то, что вам нужно:

#!/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')

enter image description here


Кстати, вы можете сделать то же самое в командной строке в терминале с ImageMagick:

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

Ключевые слова : Python, обработка изображений, PIL, Подушка, композит, маска, маскировка, купаж.

...