简介
日常生活中遇到的 .bmp 格式图片的文件头长度绝大多数都是 54 字节,这就导致我们将整个位图文件读到内存里后,像素点数据的起始地址不是 4 字节对齐的。可是使用 GD32 的 IPA 或 STM32 的 DMA2D 做硬件刷图时,往往要求像素点数据缓冲区的首地址要4字节对齐。GD32 中,使用 IPA 硬件刷图时,如果像素点数据缓冲区的起始地址不是 4 字节对齐,处理器会直接卡死。
为了更方便的在单片机里显示位图,专门做了这个小工具,将位图转换成特殊格式(.mbmp)。
mbmp 文件介绍
.mbmp 文件是另一种位图衍生体,不能直接在电脑上显示,文件的开头如下所示:
typedef struct
{
u32 pixelFormat; //像素点格式
u32 width; //宽度
u32 height; //高度
u32 byteOff; //数据域偏移量(固定为16)
}StructMcuBmp;
pixelFormat 即为像素点格式,目前只支持 ARGB888(0),RGB888(1)和 RGB565(2),像素点存放顺序与标准位图相同;width 和 height 即为图片宽度和高度;byteOff 为文件开头到像素点数据的偏移量,固定为 12。.mbmp 文件没有行补零,因为文件头长度是 16,4 字节对齐,因此像素点数据的起始地址也是按4字节对齐的。
使用
将所有需要转换的文件放到一个文件夹里,然后将小工具也放到该目录下,双击运行小工具。终端里显示“Is flip (L or R or N): ”表示是否要做翻转处理,输入 L 、R 或 N 之后,小工具会将当前文件夹下所有图片都转换成 .mbmp 格式。
注意:源码中的小工具位于“Debug”或“Release”文件夹中,具体为“BmpToMcu.exe”,可以单独使用,不依赖于其它文件。
源码
好东西,偷了
谢谢博主 功德+1
👍