Python3 и Подушка (PIL) - Добавить изображение поверх другого изображения с прозрачностью - PullRequest
1 голос
/ 17 июня 2020

Я создаю сценарий, в котором сценарий получает 2 изображения. Первое изображение - это фоновое изображение, а второе - наложенное изображение, которое будет отображаться поверх первого изображения, но с почти 90% прозрачностью.

У меня есть следующий код:

from PIL import Image
img = Image.open('C:\\Users\\USER\\Desktop\\web\\2.jpg', 'r')
img_w, img_h = img.size

img.putalpha(200)

background = Image.open('C:\\Users\\USER\\Desktop\\web\\email.jpg', 'r')
bg_w, bg_h = background.size
offset = ((bg_w - img_w) // 2, (bg_h - img_h) // 2)
background.paste(img, offset)
background.save('C:\\Users\\USER\\Desktop\\out.png')

Теперь проблема в том, что img.putalpha(200) вообще ничего не делает, даже если он должен был дать мне прозрачность изображения.

Как я могу добиться размещения наложенного изображения, а затем изменить его прозрачность в Python?

Спасибо.

1 Ответ

0 голосов
/ 17 июня 2020

Вам нужно добавить третий параметр как mask для paste () .

Я использовал эти 2 изображения:

enter image description here enter image description here

Вот полный код:

#!/usr/bin/env python3

from PIL import Image

# Open overlay image
img = Image.open('good.jpg')
img_w, img_h = img.size

img.putalpha(128)

background = Image.open('paddington.jpg')
bg_w, bg_h = background.size
offset = ((bg_w - img_w) // 2, (bg_h - img_h) // 2)
background.paste(img, offset, img)
background.save('result.png')

enter image description here

И если я вернуться к исходному коду:

background.paste(img, offset)

enter image description here

...