Как уже указывалось olt , Image.paste
не работает должным образом, когда оба источника и содержат альфа.
Рассмотрим следующий сценарий:
Два тестовых изображения, оба содержат альфа:
layer1 = Image.open("layer1.png")
layer2 = Image.open("layer2.png")
Компоновка изображения с использованием Image.paste
примерно так:
final1 = Image.new("RGBA", layer1.size)
final1.paste(layer1, (0,0), layer1)
final1.paste(layer2, (0,0), layer2)
создает следующее изображение (альфа-часть наложенных красных пикселей полностью взята со 2-го слоя. Пиксели не смешаны правильно):
Компоновка изображения с использованием Image.alpha_composite
примерно так:
final2 = Image.new("RGBA", layer1.size)
final2 = Image.alpha_composite(final2, layer1)
final2 = Image.alpha_composite(final2, layer2)
создает следующее (правильное) изображение: