bmp图片:(需要)每行对齐到4字节的原因。
1、首先要先明白:
- 内存分配单位是4字节。
- 位图中每行(像素数据)是连续的,(下一行)和(上一行)(不能共1个)分配单元(4字节)。
- 每行像素(数据长度)必须是(4字节的倍数), (字节数 % 4) 不等于0时, 后续字节用0补齐。
2、我们先来看:不满足4个字节的图

3、解决方法
- 读取的时候, 跳过:最后 124 - 123.75 = 0.25 , 0.25 * 4 = 1字节 (这一个字节)
- 因为:这1个字节是被(默认8位用 0000 0000填充)
- 注意:因为(这张图)高是142,所以共有142行, 都需要跳过这(1个字节)共跳过142个字节。
伪代码:
int color;
char r, g, b;
int i, j;
char* p = pix_array;
int line_bytes = width * bpp / 8;
int padd_bytes = (line_bytes % 4 == 0) ? 0 : (4 - line_bytes % 4);
for (i = height-1; i >=0; i--)
{
for (j = 0; j < width; ++j)
{
b = *p++;
g = *p++;
r = *p++;
color = r << 16 | g << 8 | b;
lcd_draw_point(i, j, color);
}
p += padd_bytes;
}
4、跳过填充字节:后的效果图
5、问题:联系方式