web-dev-qa-db-ja.com

PILの透明PNGは透明ではないことが判明

これでしばらく壁に頭をぶつけてきたので、誰か助けてくれるかもしれません。

PILを使用して、背景が透明でランダムな黒い落書きがいくつかあるPNGを開き、別のPNG(透明度なし)の上に配置して、3番目のファイルに保存しようとしています。

黒とは言わなかったので、最後は真っ黒になっていてイライラします。

私は他の投稿から提案された複数の修正でこれをテストしました。画像は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)
24
MarkTraceur

使用したいのは、貼り付けマスク引数だと思います。 docs を参照してください(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)
41
Paul