Прозрачный PNG в PIL оказывается не прозрачным - PullRequest
22 голосов
/ 22 сентября 2011

Я какое-то время бил меня об стену, поэтому, может быть, кто-то там может помочь.

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

В конце получается весь черный, что раздражает, потому что я этого не говорилбыть черным.

Я проверил это с несколькими предлагаемыми исправлениями из других постов.Изображение открывается в формате RGBA, и оно все еще запутано.

Кроме того, эта программа должна работать со всеми видами форматов файлов, поэтому я использую PIL.Странно, что первый формат, который я попробовал, - весь винт.

Любая помощь будет оценена.Вот код:

from PIL import Image
img = Image.open(basefile)
layer = Image.open(layerfile) # this file is the transparent one
print layer.mode # RGBA
img.paste(layer, (xoff, yoff)) # xoff and yoff are 0 in my tests
img.save(outfile)

1 Ответ

37 голосов
/ 22 сентября 2011

Я думаю, что вы хотите использовать аргумент вставки маски. см. документы , (прокрутите вниз до paste)

from PIL import Image
img = Image.open(basefile)
layer = Image.open(layerfile) # this file is the transparent one
print layer.mode # RGBA
img.paste(layer, (xoff, yoff), mask=layer) 
# the transparancy layer will be used as the mask
img.save(outfile)
...