質問

from PIL import Image

img = Image.open('1.png')
img.save('2.png')

最初の画像の背景は透明ですが、保存すると透明度がなくなります(背景は白)

何が間違っているのですか?

役に立ちましたか?

解決

おそらく画像にはインデックスが付けられているため(PILのモード「P」)、PNGアルファチャネルではなくメタデータ情報で透明度が設定されます。

次のコードを使用して、透明な背景パレットのインデックスを取得できます。

from PIL import Image

img = Image.open('1.png')
png_info = img.info
img.save('2.png', **png_info)

画像情報は辞書であるため、検査して情報を確認できます。

eg:印刷すると、次のような出力が得られます。

{'transparency': 7, 'gamma': 0.45454, 'dpi': (72, 72)}

そこに保存される情報は、元のPNGを作成したツールによって異なりますが、ここで重要なのは「透明性」です。キー。例では、パレットインデックス" 7"透明として扱う必要があります。

他のヒント

いつでもタイプを" RGBA"に強制できます。

img = Image.open('1.png')
img.convert('RGBA')
img.save('2.png')
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top