Как 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)
создает следующее изображение (альфа-часть наложенных красных пикселей полностью взята из второго слоя.Пиксели не смешиваются правильно):
композитинг изображения с использованием Image.alpha_composite
следующим образом:
final2 = Image.new("RGBA", layer1.size)
final2 = Image.alpha_composite(final2, layer1)
final2 = Image.alpha_composite(final2, layer2)
производит следующее (правильный) изображения:
Не используйте ';' в конце ваших команд в python: это уродливо ... – nosklo
Я сохраню это в своем уме, спасибо! – Arackna