bmpをNumPy配列に変換し、配列をどこかに格納してから、後でbmp画像に変換しようとしています時間。PILを使用して画像をパレットで開き、その画像を同じパレットで保存する
bmp = Image.open(fn_bmp)
data = np.array(bmp.convert('P', palette=Image.WEB))
このデータは別のファイルに一時的に保存され、後でそのデータを取得します。
bmp = Image.fromarray(np.array(dataset).convert('P', palette=Image.WEB))
bmp.save(fn)
データセットが対象であることを注意== numpyのアレイとnp.array(データセット)に戻すすべてのインデックスにデータを変換しました。
何らかの理由で、この結果イメージを表示または保存すると、パレットカラーに対応する「14」がグレースケール値として解釈され、保存されます。イメージをカラーパレットのビットマップイメージとして保存するにはどうすればよいですか?保存にオプションを追加しようとしました(たとえば、mode = 'P'、palette = Image.WEB)。ご協力ありがとうございました。
EDIT:PILドキュメントのチュートリアル部分において
、それは変換の制限を指定します。
ライブラリは、サポートされる各モードと "L"および "RGB"モードの間の変換をサポートします。他のモード間で変換するには、中間画像(通常は「RGB」画像)を使用する必要があります。
私がやっていたことを達成するためには、最初の配列でイメージをRGBに変換し、2番目のイメージをPに戻す必要があります。
しかし、RGBからPに変換すると、画像(4色のみ)が歪んでしまいます。これには何らかの理由がありますか?