画像・アイコンファイル¶
Family mruby が対応する画像・アイコン形式と、その作成・変換方法を説明します。
| 形式 | 用途 | 関連 API |
|---|---|---|
| BMP (RGB332) | 一般的な画像表示・スプライト | BMP332 / SpriteImage |
.icon |
アプリアイコン(テキスト形式) | – |
| PNG | 直接表示は 未対応(変換ツールで BMP332 に) | – |
BMP (RGB332)¶
Family mruby が標準で扱う画像形式は RGB332 BMP です(1 ピクセル = 1 バイト、R:3 G:3 B:2)。
特徴¶
- 1 ピクセル 1 バイトと小さく、PSRAM 容量を節約できる
- WROVER 側でハードウェアデコードできるため描画が高速
- 256 色相当(実際は 8R × 8G × 4B = 256 通り)
フォーマット仕様¶
標準的な BMP ヘッダ(BITMAPFILEHEADER + BITMAPINFOHEADER) + 8bit インデックス無しの直接ピクセル列。各ピクセルは RGB332 値そのもの。
PC で作る方法(変換手順)¶
GIMP / ImageMagick / Photoshop 等で:
- 画像を必要なサイズにリサイズ
- 256 色(インデックスなし)モードに変換
- BMP として保存
RGB332 への色変換は PC 側で行ってから書き込みます。
使い方¶
# スプライト画像として読み込み(高速)
img = SpriteImage.new(@gfx, width: 32, height: 32,
transparent_color: 0, use_transparent: true)
img.load_bmp("/usr/share/sprite/player.bmp")
# 通常画像として読み込み・表示
ret = @gfx.create_image_from_file("/img.bmp")
@gfx.draw_image(ret[:id], 10, 20)
# Ruby 側でピクセルを操作したい場合
data = File.open("/img.bmp", "r") { |f| f.read }
bmp = BMP332.parse(data)
# bmp[:width], bmp[:height], bmp[:pixels]
配置先¶
任意のパス。慣例的には:
/usr/share/sprite/ # スプライト
/usr/share/picture/ # 一般画像
/<your_app>/ # アプリ専用
アイコンファイル (.icon)¶
アプリのランチャーに表示するアイコンを定義する テキスト形式 のファイルです。
形式¶
# <名前> (<幅>x<高さ>) color=0x<RGB332>
............
...111111...
..11111111..
.11111.1111.
111111..1111
.1111111111.
..11111111..
...111111...
....1111....
.....11.....
............
............
| 文字 | 意味 |
|---|---|
. |
透明(描画しない) |
1 |
ピクセル(指定色で塗る) |
# |
コメント行(先頭に色設定が書ける) |
コメント行のメタ情報¶
color=0xNNで全ピクセルの色(RGB332)を指定- 省略時は白 (
0xFF)
推奨サイズ¶
ランチャーアイコンの標準サイズは 12 × 12 ピクセル(既存アイコンに合わせると統一感あり)。
配置先¶
/usr/share/icon/<name>.icon
.toml で参照する際は:
icon = "usr/share/icon/myapp.icon"
(先頭の / は不要、相対パスで書きます)
サンプル¶
リンゴ風アイコン (12 × 12、赤):
# Apple (12x12) color=0xE0
......1.....
.....11.....
.....1......
....1......
...111111...
..11111111..
.111111111..
.111111111..
.111111111..
.111111111..
..11111111..
...111111...
既定アイコン¶
.toml で icon を省略すると、本体ファイルの拡張子に応じた既定アイコンが使われます:
| 拡張子 | 既定アイコン |
|---|---|
.rb |
usr/share/icon/ruby.icon |
.lua |
usr/share/icon/lua.icon |
.bas |
usr/share/icon/basic.icon |
PNG¶
PNG ファイルの直接表示は 未対応 です。PC 側で BMP332 形式に変換して書き込んでください(GIMP の「エクスポート」→ BMP、24bit を選んだ後、別途 RGB332 変換スクリプトで圧縮)。
関連¶
- BMP332 API
- Sprite
- スプライトエディタ:
flash/app/tool/sprite_editor.app.rb