Arduino OLED驱动显示XBM图片
如果我们想在OLED屏幕上显示图片,我们最常规的做法就是先将图片取模后,在将取模得到的数组存进单片机能读到的地方,今天介绍的是常见图片格式xbm格式图片显示。
XBM介绍
xbm格式是用文本编码二进制表示黑白图片的格式,只能表示单色像素(黑白),能直接编译到应用程序内。
在用单片机驱动小尺寸液晶屏绘图的时候,由于片上算力和资源有限,把图片转换成 xbm 格式直接编译进固件是个很常见的操作。
显示原理介绍
- 例子中 4 像素的图片是怎么转换成 { 0x06 } 字节数组的?像素序列和字节数组的对应关系是什么?

- 从左到右,从上到下,遍历像素。
- 激活像素记 1,非激活像素记 0,按 大端模式 排列成二进制比特序列,不足 8 位则以 0 补齐。
- 以 unsigned char 数组表示上述二进制比特序列,即得 xbm 格式。
XBM图片相关驱动库函数
- esp8266-oled-ssd1306库显示
xbm图片:
// Draw a XBM
void drawXbm(int16_t x, int16_t y, int16_t width, int16_t height, const uint8_t *xbm);
- 使用
U8G2库显示XBM图片:
u8g2.drawXBM:绘制内存 RAM 中 XBM 图像
u8g2.drawXBMP:绘制 FLASH 中 XBM 图像(可以在UNO上节约宝贵内存)
图片格式转换网站
该网址提供的是全图转换,如果你要指定大小的图片,先提前处理好图片尺寸,再进行转换。
转换示例
以这图为例:(图片来源:https://hub.fastgit.org/)

转换后的图片使用看图软件打开预览(截图显示,Markdown不支持xbm图片格式载入)
- 除了可以使用看图软件打开,还可以使用文本编辑器打开,查看十六进制编码,我这里以VSCode打开xmb图片



1121

被折叠的 条评论
为什么被折叠?



