本帖最后由 hpdell 于 2016-1-12 15:12 编辑
请教下,读取sd卡、u盘里面的bmp图片解码显示,sd卡与u盘里面的bmp图片文件完全一样,图片的位图也都一样,
bmp的位图图片有:1、4、8、16、24、32位的,除8位U盘里面的图片显示颜 {MOD}不正常位,其他都正常,sd卡里面的所以位图显示都正常。
#pragma pack(4) // 这个地方改成4字节对齐,如果不改成4字节对齐,那么u盘读取失败
typedef __packed struct{
unsigned char type[2];
unsigned long int file_size;
unsigned long int reserved;
unsigned long int offset;
unsigned long int header_info_size; //0x28
unsigned long int width;
unsigned long int height;
unsigned short int planes; //always 1
unsigned short int bit_count; // 1 4 8 16 24 32
unsigned long int compression;
unsigned long int image_size; //can set 0(rgb)
unsigned long int xpels_per_meter;
unsigned long int ypels_per_meter;
unsigned long int color_used;
unsigned long int color_important;
unsigned long int mask;
}BMP_MASK_T;
按照上面改成4字节对齐后,sd卡显示仍然正常,但是读取u盘里面的 8位 位图图片显示时,显示的图片颜 {MOD}不对,不知道是什么情况啊 ???
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8位的bmp数据是从1078的地方开始读取,1078之前的数据都是对的,就是读取图片数据就不对了,真是奇怪啊 !!!!!!
在fatfs系统里面的 ffconfig.h 里面,#define _USE_BUFF_WO_ALIGNMENT 1
吧这个1 改成0就ok了
一周热门 更多>