SOには、現在の質問に対する回答を提供する質問がたくさんありますが、出力は期待されていません。
目標は、2つのRGBA画像をマージすることです。各画像のアルファチャネルに関する情報は同じではありません。
現在の(簡略化された)コードは次のとおりです。
from PIL import Image
image = '1.png'
watermark = '2.png'
wmark = Image.open(watermark)
img = Image.open(image)
img.paste(wmark, (0, 0), wmark)
img.save("result.png", "PNG")
2つの画像は次のとおりです。
バックグラウンド
前景
期待される出力
実結果
違いがわからない場合は、最終バージョンのアルファチャネル(視覚化を向上させるために反転)を次に示します。
期待される結果-アルファチャネル
実際の結果-アルファチャネル
そうは言っても、これを行う方法はありますか、それとも私は何か間違ったことをしていますか?
編集-@zenpoyコメントに続く説明:
前景画像にある程度の不透明度がある場合は、両方の画像を重ね合わせるときにそれを考慮に入れたいのですが、2番目の画像のアルファチャネルを最初の画像に追加したくありません。紙の画像(背景)の前にガラス(前景の画像)を置くのと同じです。
つまり、背景画像がRGBAではなくRGBである場合、最終的な画像にはアルファ情報が含まれていないはずです。