Как наложить узор на PNG с помощью Pillow in Python - PullRequest
1 голос
/ 29 мая 2020

Я хочу наложить определенный узор на рубашку с помощью подушки Python, это мой код -

design =Image.open("source/stripe.png").convert("RGBA")
shirtsketchtrans = Image.open("source/shirtsketchtrans.png").convert("RGBA")

design.paste(shirtsketchtrans, (0,0), shirtsketchtrans)
design.show()

Результат следующий - I don't mind the size, that can be fixed

Я не особо возражаю против размера, который можно исправить. Но что я хочу сделать, так это наложить полосатый узор только на PNG моей рубашки, а не на весь фон, в основном получить узор только на моей рубашке и нигде больше.

Есть ли решение этого? Любая помощь приветствуется! Спасибо!

Изменить: входные / исходные изображения -

enter image description here

enter image description here

1 Ответ

3 голосов
/ 29 мая 2020

PIL сам по себе недостаточно умен, чтобы знать, что «внутри» или «снаружи» рубашки. Вам нужно создать маску прозрачности , а затем использовать PIL.Image.composite, чтобы объединить их.

Пример:

design = Image.open("source/stripe.png").convert("RGBA")
shirt_sketch_trans = Image.open("source/shirtsketchtrans.png").convert("RGBA")
shirt_sketch_mask = Image.open("source/shirtsketchmask.png").convert("RGBA")

full_design = Image.composite(design, shirt_sketch_trans, shirt_sketch_mask)
full_design.show()
...