from PIL import Image
img = Image.open('1.png')
img.save('2.png')
最初の画像は背景が透明なのですが、保存すると透明度がなくなります(背景が白)
私は何を間違っていますか?
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)
画像情報はディクショナリであるため、それを調べて、含まれている情報を確認できます。
例: 印刷すると、次のような出力が得られます。
{'transparency': 7, 'gamma': 0.45454, 'dpi': (72, 72)}
そこに保存される情報は、元の PNG を作成したツールによって異なりますが、ここで重要なのは「透明度」キーです。例では、パレット インデックス "7" を透明として扱う必要があることを示しています。
タイプを「RGBA」に強制することはいつでもできます。
img = Image.open('1.png')
img.convert('RGBA')
img.save('2.png')