• 締切済み

python PIL のインデックスモードでの保存

python の画像処理ライブラリ PIL にてインデックスモードの画像を読み込んだときの処理について 質問があります。 下記のコードのように png (インデックスモード) の画像を読み込んでピクセルの値を変えて 再びインデックスモードで保存しようと試みました。 しかし、出力された画像には色がついておらず、白黒の画像になっていました。 色の情報が抜けてしまったのですがどこが間違っているかわかりません。 どなたか分かるかたはいらっしゃらないでしょうか。 ご回答いただけたら幸いです。 よろしくお願いします。 from PIL import Image import numpy as np import sys origin = (0,1,4,4,5) to = (0,1,4,4,5) for ID in open(sys.argv[1]): ID = ID.strip() im=Image.open(ID+'.png') print im.info imnp=np.array(im) for (i, j) in zip(origin,to): imnp[imnp==i] = j pil_img = Image.fromarray(np.uint8(imnp),mode="P") pil_img.save(ID+'_con.png','bmp')

みんなの回答

  • xs8900a
  • ベストアンサー率0% (0/0)
回答No.1

インデックスカラーで保存する際にパレットの指定が必要になります。 元画像のパレットを流用するのでしたら、保存前に pil_img.putpalette(im.getpalette()) を追加すれば良いと思います。

関連するQ&A