BMP图片保存格式(c语言)

BMP图片保存格式(c语言)

如果在某种场景下获取到rgb数据裸流,需要保存图片,查看保存的数据是否正常,通常利用保存bmp图片,通过window 看图app查看,这里主要介绍bmp数据头:

以结构体动态设置(长度54字节)

位图文件头(bmp file header): 提供文件的格式、大小等信息 14byte
位图信息头(bitmap information):提供图像数据的尺寸、位平面数、压缩方式、颜色索引等信息 40byte

struct bmp_head {
unsigned short bftype;
unsigned int bfSize;
unsigned short bfReserved1;
unsigned short bfReserved2;
unsigned int bfoffBits;//54
}__attribute__((packed)); //14byte

struct bmp_info{
unsigned int biSize; //0x28
unsigned int biWidth;
unsigned int biHeight;
unsigned short biPlanes;
unsigned short biColorBit;//argb8888 rgb888 rgb565
unsigned int biCompression;
unsigned int biSizeImage;
unsigned int biXPelsPerMeter;
unsigned int biYPelsPerMeter;
unsigned int biClrImportant;
unsigned int biClrUsed;	
}__attribute__((packed));//40byte

	struct bmp_head head;
	struct bmp_info info;
	
	head.bftype = 0x4d42;
	head.bfSize = sizeof(struct bmp_info)+sizeof(struct bmp_head) + len;
	head.bfReserved1 = 0;
	head.bfReserved2 = 0;
	head.bfoffBits = 54;
	
	info.biSize = sizeof(struct bmp_info);
	info.biWidth = width;
	info.biHeight = height;
	info.biPlanes = 1;
	info.biColorBit = 32;
	info.biCompression = 0;
	info.biSizeImage = len;
	info.biXPelsPerMeter = 5000;
	info.biYPelsPerMeter = 5000;
	info.biClrImportant = 0;
	info.biClrUsed = 0;

或者可以采用定的bmp头文件 下表(长度66字节)

//3-6 len //19-22 pixel weith  //23-26 pixel height //29-30 bitwith  //35-38 pixel size byte 
const unsigned char bmp_header_480p[66]={
0x42,0x4D,0x42,0xc0,0x12,0x00,0x00,0x00,0x00,0x00,0x42,0x00,0x00,0x00,0x28,0x00,//1-16 
0x00,0x00,0x80,0x02,0x00,0x00,0xe0,0x01,0x00,0x00,0x01,0x00,0x20,0x00,0x03,0x00,//17-32
0x00,0x00,0x00,0xc0,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//33-48
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0x00,0x00,0xFF,0x00,//49-64
0x00,0x00 
};

const unsigned char bmp_header_720p[66]={
0x42,0x4D,0x42,0x40,0x38,0x00,0x00,0x00,0x00,0x00,0x42,0x00,0x00,0x00,0x28,0x00,//1-16 
0x00,0x00,0x00,0x05,0x00,0x00,0xd0,0x02,0x00,0x00,0x01,0x00,0x20,0x00,0x03,0x00,//17-32
0x00,0x00,0x00,0x40,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//33-48
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0x00,0x00,0xFF,0x00,//49-64
0x00,0x00 
};

const unsigned char bmp_header_1080p[66]={
0x42,0x4D,0x42,0x90,0x7e,0x00,0x00,0x00,0x00,0x00,0x42,0x00,0x00,0x00,0x28,0x00,//1-16 
0x00,0x00,0x80,0x07,0x00,0x00,0x38,0x04,0x00,0x00,0x01,0x00,0x20,0x00,0x03,0x00,//17-32
0x00,0x00,0x00,0x90,0x7e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//33-48
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0x00,0x00,0xFF,0x00,//49-64
0x00,0x00 
};
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值