1.44インチのカラー液晶だが、ArduinoのライブラリとかだとSDカードを取り付けてそこから読み込んだ画像を表示したりしている。
「1.44inchカラー液晶+Arduino Nano クローン+SDカード で画像表示する。」
それでもいいんだが、せっかくプログラム・メモリが65535bytesもあるんだから画像くらい持てるだろう。
圧縮した画像をデコードするほどの技量は無いので、そのままのデータで置きたい。
仮にフルカラーだと、128 × 128 × 3 = 49152 bytes となって1枚しか持てなくてちょっと寂しい。
PSPの減色処理のメニューを見ると下のようになっていて、
16色か256色ってとこだろう。
256色8ビットとすれば、 128 × 128 × 1 = 16384 bytes となって3~4枚持てそうだ。
調べてみる。
ここあたりを参考にさせていただいた。
http://www.umekkii.jp/data/computer/file_format/bitmap.cgi
自分なりに解釈したところをまとめると以下の通り。
色情報が1ピクセルあたり8ビットになるというのはいい。
256色というのは、使われている代表的な色を256色に集約してその色のテーブル(パレット)を持つということのようだ。
各ピクセルは、その256色のうちのどの色でそのピクセルを表示するかを色の番号(インデックス)で持っている。
そもそもBMPファイルには、ヘッダ、パレット、画像データの順にデータが書いてある。
ある画像を減色して8ビット化したもののパレットを表示したのが下の絵だ。
上は119番のパレットを示しており、色は R:169, G:82, B:84 と記録されている。
あるピクセルを表示しようとする場合の手順は以下の通り。
1.ピクセルのデータとして1バイトのデータを読んでくる。
データは0~255のいずれかだ。
ここでは 119 とする。
2.その番号に対応した120セット目のパレット・データを読みに行く。
順に 0x54, 0x52, 0xA9, 0x00 と書いてある。
これは BGR の順だ。
最後に1バイト(0x00)のダミーを加えて4バイトで1セットとなっている。
256セット、256 × 4 = 1024 bytes 書いてある。
3.液晶の表示ピクセルの青を0x54、緑を0x52、赤を0xA9で光らせる。
4.以上をピクセル数だけ繰り返す。
BMPファイルのデータをCのデータ・ファイルにするプログラムをVB6で作った。
この1.44インチのカラー液晶に実際に写真を表示させる話は「PIC32MM0064GPL028 + ST7735 でプログラム・メモリに置いた画像を表示させる。 – 表示する –」
へ続く。
GIMP編は以下から
「PIC32MM0064GPL028 + ST7735 でプログラム・メモリに置いた画像を表示させる。- データの準備GIMP編 –」