• 締切
  • すぐに回答を!

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

  • 質問No.9289105
  • 閲覧数1108
  • ありがとう数0
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 88% (209/235)

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')

回答 (全1件)

  • 回答No.1

ベストアンサー率 0% (0/0)

インデックスカラーで保存する際にパレットの指定が必要になります。
元画像のパレットを流用するのでしたら、保存前に

pil_img.putpalette(im.getpalette())

を追加すれば良いと思います。
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ