2012-09-17 7 views
10

これは私の問題です:PIL画像モード "P" - > "RGBA"

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

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

画像:original

結果:result

注:元画像が半透明の輝きを持って、結果が持っている固体

+0

あなたは問題が多分、何であるかを説明してもらえますか? – mwcz

+0

あなたは実際に違いが何であるかは言いません。前後の画像は含まれていますか? –

+0

テスト済みです。違いは見られませんでした。どのようなpythonとpilのバージョンを使用していますか? –

答えて

0

あなたの問題はあなたがいないということである緑色の「グロー」 PILがALPHAチャネルのソースとして使用する必要がある情報を提供します。

PILは画像に透明度を追加することはありません。

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

+0

元の「P」画像で透明または半透明の部分:Pおよび自動検出も変換する必要がある唯一の画像ではありません。 – mDroidd

+0

申し訳ありませんが、どちらの画像も同じように見えます。あなたは赤で透明になるはずの3番目のイメージ部分に印を付けることができますか? –

3

残念ながら、あなたのPNG画像は、PILが非常にうまく処理できないタイプです。アルファチャンネルを持つパレット画像です。画像を開くと、アルファは投げ捨てられ、戻す方法はありません。

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

+0

関連する場所:[PngImagePlugin tRNSローダー](https://github.com/python-imaging/Pillow/blob/master/PIL/PngImagePlugin.py#L527-529)ここでは、アルファの代わりに1バイトしか読み込まれませんブロック、[PNG tRNS spec](http://www.libpng.org/pub/png/spec/1.2/PNG-Chunks.html#C.tRNS)を参照してください。 – jterrace

0

あなたはscipy.misc.imreadを使用することができます。

img = scipy.misc.imread(filename, mode='RGBA') 
img = Image.fromarray(img) 
関連する問題