web-dev-qa-db-ja.com

PILイメージモード「P」->「RGBA」

これは私の問題です:

import Image
im = Image.open("1.png")
im.show()
print im.mode
im.convert("RGBA").save("2.png")

さて、私の画像であなたは違いを見ることができます。
私の質問は、どうすれば正しく変換できますか?

画像: original

結果: result

注:元の画像には半透明のグローがあり、結果には緑色の「グロー」が点灯します。

12
mDroidd

この問題はここで報告されました:

https://bitbucket.org/effbot/pil-2009-raclette/issue/8/corrupting-images-in-palette-mode

2012年3月、コメントによると、PILの開発バージョンで修正されました。最新のリリースバージョンは1.1.7であるため、1.2がリリースされるまで修正は利用できません。 PILの更新veryはゆっくりなので、すぐに公開されるとは思わないでください。

7
jterrace

残念ながら、PNG画像は、PILがうまく処理できないタイプです。アルファチャネルを備えたパレット画像です。画像を開くと、アルファは破棄され、元に戻す方法はありません。

これは、パレットの1つのインデックスを使用して完全に透明なピクセルを示す通常のパレットの透明度とは異なります。

5
Mark Ransom

scipy.misc.imread

img = scipy.misc.imread(filename, mode='RGBA')
img = Image.fromarray(img)
1
Martin Thoma

あなたの問題は、PILがアルファチャネルのソースとして何を使用すべきかについての情報を提供しないことです。

PILは、それ自体で画像に透明度を追加することはありません。

画像のどの部分を透明にしたいですか?

0
przemo_li