8bitカラーのBMP画像のカラーパレット操作(python PIL)。
某お仕事で、今後必要になるであろう。
前回↓
photoshop:減色処理をバッチとjavascriptで実現。 - redtaxi d-side
の延長のお話。
今回は、8bitカラー(インデックスカラー)のbmp画像のカラーパレットを編集したいというお話。
特に、透過指定色に使われているある色をカラーパレット内にて移動(最初に持ってくる)する。
まず、pythonで画像いぢくるとなるとコイツ↓PIL
Python Imaging Library (PIL)
基本の使い方。
import Image import ImagePalette #まずは対象ファイルオープン img = Image.open("D:\work\xxx\xxx.bmp") #表示(必要ないけど・・・) img.show() #カラーパレット取得 palette = img.getpalette() #RGB値のリストで返ってきます。 #ここからこのリストの順番やRGB値をいぢって。。。 #戻す! img.putpalette(np) #このままだと、実際のデータのカラー指定がズレてるので、 #パレットの移動にあわせて、実データもずらす。 #まずは、データの取得。 data = list(img.getdata()) #リストで指定パレット番号が返る。 #指定パレット番号をいぢって戻す! img.putdata(data) #保存 img.save("D:\work\xxx\xxx.bmp")
このあたり↓が参考になりました。感謝。
PILでGBA with Python - 神様なんて信じない僕らのために