画像をC配列としてファームウェアに埋め込む

マイコンのディスプレイはPNGではなくバイト配列を食べます。スプラッシュ画像を#includeできるヘッダに変換します。

このガイドで使う道具

やりたいこと

OLEDや電子ペーパーのフレームバッファは生バイトを要求します。画像を長辺512px以内へ縮小し、8ビットグレースケール(1px1バイト)またはMSB先頭で詰めた1bppビットマップを出力します。

画像からヘッダへ

画像を選び、8bppまたは1bpp(ビットマップはしきい値と反転あり)を指定して配列名を付け、.hをダウンロードします。WIDTH/HEIGHT/BPPのdefineとバイト配列を含みます。

具体例

2×1で2ピクセルが0xABと0xCDの画像は、8bppでstatic const unsigned char icon[2] = { 0xab, 0xcd };になります。1bppでは行がバイト境界にパディングされ、幅9pxなら1行2バイト使います。

対応範囲

PNG/JPG/WebP、25MiBまで、長辺512pxへ縮小。グレースケールはRec.601輝度ミックス。RLEやパレット出力はなく、プレーンなバイト列でフレームバッファへのmemcpyに使えます。