これは私の問題です:
import Image
im = Image.open("1.png")
im.show()
print im.mode
im.convert("RGBA").save("2.png")
さて、私の画像であなたは違いを見ることができます。
私の質問は、どうすれば正しく変換できますか?
画像:
結果:
注:元の画像には半透明のグローがあり、結果には緑色の「グロー」が表示されます。
これは私の問題です:
import Image
im = Image.open("1.png")
im.show()
print im.mode
im.convert("RGBA").save("2.png")
さて、私の画像であなたは違いを見ることができます。
私の質問は、どうすれば正しく変換できますか?
画像:
結果:
注:元の画像には半透明のグローがあり、結果には緑色の「グロー」が表示されます。
この問題はここで報告されました:
https://bitbucket.org/effbot/pil-2009-raclette/issue/8/corrupting-images-in-palette-mode
2012年3月、PILの開発バージョンで修正されたというコメントがあります。最新のリリースバージョンは1.1.7であるため、1.2がリリースされるまで修正は利用できません。PILの更新は非常に遅いため、すぐに公開されるとは思わないでください。
残念ながら、PNG画像は、PILがうまく処理できないタイプです。アルファチャネルを備えたパレット画像です。画像を開くと、アルファは破棄され、元に戻す方法はありません。
これは、パレットの1つのインデックスが完全に透明なピクセルを示すために使用される通常のパレットの透明度とは異なります。
あなたが使用することができますscipy.misc.imread
:
img = scipy.misc.imread(filename, mode='RGBA')
img = Image.fromarray(img)
あなたの問題は、PILがALPHAチャネルのソースとして何を使用すべきかについての情報を提供しないことです。
PILは、それ自体では画像に透明度を追加しません。
画像のどの部分を透明にしたいですか?