

python の画像処理ライブラリ PIL にてインデックスモードの画像を読み込んだときの処理について質問があります。  
下記のコードのように png (インデックスモード） の画像を読み込んでピクセルの値を変えて  
再びインデックスモードで保存しようと試みました。  
しかし、出力された画像には色がついておらず、白黒の画像になっていました。  
色の情報が抜けてしまったのですがどこが間違っているかわかりません。  
どなたか分かるかたはいらっしゃらないでしょうか。  
ご回答いただけたら幸いです。  
よろしくお願いします。

[code]

    from PIL import Image
    import numpy as np
    import sys
    
    origin = (0,1,4,4,5)
    to = (2,4,3,4,2)
    
    for ID in open(sys.argv[1]):
       ID = ID.strip()
       im=Image.open(ID+'.png')
       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','png')
    
[/code]


CC BY-SA 4.0
2017-02-02T17:36:54.840
32348
2021-04-07T03:06:50.657
2021-01-25T01:20:46.110
3060
20498
question
python 画像 pil
python PIL のインデックスモードでの保存


外部サイトの[類似質問](https://okwave.jp/qa/q9289105.html)の回答を引用します。

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

>     pil_img.putpalette(im.getpalette())
>  
[/code]

>
> を追加すれば良いと思います。

* * *

この投稿は外部サイトの[類似質問](https://okwave.jp/qa/q9289105.html)を引用し、[コミュニティWiki](https://ja.meta.stackoverflow.com/q/1583)として投稿しました。


CC BY-SA 4.0
2021-01-25T01:19:29.810
73555
2021-01-25T01:21:37.623
2021-01-25T01:21:37.623
3060
9820
32348
answer