在用单片机驱动小尺寸液晶屏绘图的时候,如果用 gui 库,就几乎一定要准备 xbm 格式的文件,供 gui 绘图使用。
太长不看版
xbm 格式是用文本编码二进制表示黑白图片的格式。
点击前往 在线 XBM 格式生成器
- 支持 lua、c 语言格式
- 支持在线载入图片、画布绘制
- 宽高可调、二值化阈值可调
xbm 是一种非常古老的图片文件格式,最早用于 X Window System,具有如下特性:
- 文本编码二进制
- 只能表示单色像素(黑白)
- 能直接编译到应用程序内
在用单片机驱动小尺寸液晶屏绘图的时候,由于片上算力和资源有限,把图片转换成 xbm 格式直接编译进固件是个很常见的操作。
举例一张最简单的 2x2 图片
它转换成 xbm 格式后,就会变成一串类 C 代码:
#define image_bits_width 2;
#define image_bits_height 2;
const unsigned char image_bits = { 0x06 };
是不是很熟悉的味道?没错,xbm 是 C 语言源文件,这意味着 它们不是由图形显示程序读取,而是由 C 编译器读取。
但你可能会问,例子中 4 像素的图片是怎么转换成 { 0x06 }
字节数组的?像素序列和字节数组的对应关系是什么?
如下图所示:
- 从左到右,从上到下,遍历像素
- 激活像素记 1,非激活像素记 0,按 大端模式 排列成二进制比特序列,不足 8 位则以 0 补齐
- 以
unsigned char
数组表示上述二进制比特序列,即得 xbm 格式
由于目前能找到的 xbm 格式转换器不多,好用的更少,怎么办?当然是自己撸一个。
点击前往 在线 XBM 格式生成器
- 支持 lua、c 语言格式
- 支持在线载入图片、画布绘制
- 宽高可调、二值化阈值可调
参考: