将数据写以BMP格式写入SD卡中

FatFs - Generic FAT Filesystem Module (elm-chan.org) 

memcpy函数的作用:

void *memcpy(void *destin, void *source, unsigned n);

以source指向的地址为起点,将连续的n个字节数据,复制到以destin指向的地址为起点的内存中。
函数有三个参数,第一个是目标地址,第二个是源地址,第三个是数据长度。

	memcpy(0x3000000,0x2000000,1920*1080*4);
int savebmpimg(BITMAPFILEHEADER fileh,BITMAPINFOHEADER infoh,char * filename,u8 *imgsrc){
	FATFS fatfs;	//file system object
	TCHAR *path="0:/";
	FRESULT res;
	FIL fil;
	UINT numbytewrite;
	res=f_mount(&fatfs,path,0);
	if(res==!FR_OK){
		return XST_FAILURE;
	}
	res=f_open(&fil,(TCHAR *)filename,FA_WRITE|FA_CREATE_ALWAYS);
	if(res==!FR_OK){
		return XST_FAILURE;
	}
	res=f_lseek(&fil,0);
	if(res==!FR_OK){
		return XST_FAILURE;
	}
	res=f_write(&fil,&fileh,sizeof(BITMAPFILEHEADER),&numbytewrite);
	if(res==!FR_OK){
		return XST_FAILURE;
	}
	res=f_write(&fil,&infoh,sizeof(BITMAPINFOHEADER),&numbytewrite);
	if(res==!FR_OK){
		return XST_FAILURE;
	}
	res=f_write(&fil,imgsrc,1920*1080*3+256,&numbytewrite);
	if(res==!FR_OK){
		return XST_FAILURE;
	}
	res=f_sync(&fil);
	if(res==!FR_OK){
		return XST_FAILURE;
	}
	res=f_close(&fil);
	if(res==!FR_OK){
		return XST_FAILURE;
	}
}

一下代码的作用是:原本数据是{FF,R,G,B},最高位的ff是不需要的,BMP格式不需要最高位的ff,通过这个函数将高8位的ff舍弃掉。 

int ffrgbtorgb(u8* ffrgb ,u8 *rgb){
	int i;
	for(i=0;i<1920*1080*4;i++){
		if(i%4!=3){
			*rgb = *ffrgb;
			rgb++;
			ffrgb++;
		}
		else{
			ffrgb++;
		}
	}
}

以下代码是将结构体赋值,主要是为了BMP数据head

    BITMAPFILEHEADER filh;
    BITMAPINFOHEADER infh;

    filh.bfOffBits = 54;
    filh.bfReserved1 =0;
    filh.bfReserved2 =0;
    filh.bfSize = 54 + 1920*1080*3;
    filh.bfType = 0x4d42;

    infh.biBitCount = 24;
    infh.biClrImportant = 0;
    infh.biClrUsed=0;
    infh.biCompression =0;
    infh.biHeight=1080;
    infh.biPlanes=1;
    infh.biSize=40;
    infh.biSizeImage=1920*1080*3;
    infh.biWidth=1920;
    infh.biXPelsPerMeter=0;
    infh.biYPelsPerMeter=0;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值