|
楼主 |
发表于 2013-3-22 08:28:27
|
显示全部楼层
adce 发表于 2013-3-22 07:05
DMA 4字节对齐的问题....求更优秀的解决方案...
BMP头是54字节....Buffer从第二个开始用就可以正确了...
if ...
7楼 8楼解决了我的问题。8楼的解决方案不可行。
需要修改位图的信息头才行。
改成:
const unsigned char bmpheader[56]=
{
0x42,0x4d, //偏移量0x0000 文件标识 "BM" ,不需要修改
0x38,0x84,0x03,0x00,//偏移量0x0002 用字节表示整个文件的大小 0x038436 = 230456 = 320*240*3+56
0x00,0x00,0x00,0x00,//偏移量0x0006 保留,必须设置为0,不需要修改
0x38,0x00,0x00,0x00,//偏移量0x000a 文件开始到位图数据之间的偏移量 0x38 = 56
0x28,0x00,0x00,0x00,//偏移量0x000e 位图信息头的长度,一般是0x28,不需要修改
0x40,0x01,0x00,0x00,//偏移量0x0012 位图的宽度 0x0140 = 320
0xF0,0x00,0x00,0x00,//偏移量0x0016 位图的高度 0x00f0 = 240
0x01,0x00, //偏移量0x001a 位图的位面数,该值总是1,不需要修改
0x18,0x00, //偏移量0x001c 每个像素的位数 0x18 = 24
0x00,0x00,0x00,0x00,//偏移量0x001e 压缩,0表示不压缩,不需要修改
0x00,0x84,0x03,0x00,//偏移量0x0022 表示位图数据的大小,行必须是4的倍数,否则补零 0x038400 = 320*240*3 = 230400
0xc4,0x0e,0x00,0x00,//偏移量0x0026 用像素/米表示的水平分辨率,参数无关紧要
0xc4,0x0e,0x00,0x00,//偏移量0x002a 用像素/米表示的垂直分辨率,参数无关紧要
0x00,0x00,0x00,0x00,//偏移量0x002e 位图使用的颜色数,不需要修改
0x00,0x00,0x00,0x00,//偏移量0x0032 Important colors,不需要修改
0x00,0x00
};
即可。就是在原来的基础上加上了2个字节。改变编译量为56,文件大小为320x240+56 |
|