1

複数の画像を重ねて 1 つの画像を作成したいと考えています。ただし、それらを操作していると、画像に既に透明度 (アルファ != 255) がある場合、画像のその部分がぼやけて見えることに気付きました。透明性がなければ、すべてが良いです。

作業中の画像の 1 つを PNG に保存し、問題を再現する小さなコードを作成しました。基本的に、透明な背景を持つ新しい画像を作成し、その画像を上に貼り付けています。

from PIL import Image

img=Image.new('RGBA', (946,627), (0,0,0,0))
overlayImage = Image.open('drawing.png')
img.paste(overlayImage, (0,0), overlayImage)
img.save('drawing-pasted.png')

これが完了すると、drawing-pasted.png は次のようになります。

drawing-pasted.png

しかし、元の図面 (drawing.png) は次のようになります。

drawing.png

(画像は詳細を表示するために手動でトリミングされています。) 元の画像の円の塗りつぶし色のアルファ値は 179 です。

他の誰かがこれに遭遇しましたか?私は何が間違っていますか?

どうもありがとう。

4

2 に答える 2

0

作成している背景は黒で完全に透明です。オリジナルは青ですが、アルファが 179 であるため、 100% 青を想定すると、2 つのピクセル (0,0,0,0) と (0,0,255,179) になります。その中の画像は背景のにあるため、(255-179)/255 または約 30% の黒を許可する新しい画像のアルファを使用します。 (NB 背景のアルファは、新しい画像の背後にあるため、違いはありません)

overlayImage.putalpha黒の背景ではなく、画像から開始するアルファを 255 に設定するために使用できます。

于 2013-09-07T14:54:15.587 に答える