В Python 3x моей целью является наложение изображения RGBA типа PIL (версия 5.1) на изображение в оттенках серого:
from PIL import Image
layer1 = Image.open("lena.jpg")
layer2 = Image.open("watermark.png")
canvas = Image.new("RGBA", layer1.size, (0,0,0,0))
canvas.paste(layer1)
canvas.paste(layer2, (int(layer1.width/2.2), int(layer1.height/1.8)), layer2)
canvas.show()
Похоже, это работает, но учитывается ли прозрачность A-канала?
В этом случае layer2 (RGBA) всегда намного меньше, чем layer1 (оттенки серого).
Насколько я понимаю, использование метода вставки в более старых версиях PIL (версия 3.1) не учитывает альфа-канал, а более новый (версия 5) делает? из документов:
Если дана маска, этот метод обновляет только области, указанные маской. Вы можете использовать изображения «1», «L» или «RGBA» (в последнем случае альфа-полоса используется в качестве маски). Если маска 255, данное изображение копируется как есть. Если маска равна 0, текущее значение сохраняется. Промежуточные значения будут смешивать два изображения вместе, включая их альфа-каналы, если они есть.
![enter image description here](https://i.stack.imgur.com/g00Zp.png)