图像处理———BMP

简介

BMP是英文Bitmap(位图)的简写,它是Windows操作系统中的标准图像文件格式,能够被多种Windows应用程序所支持。

结构

1、位图文件头(0~13字节)

0~1字节 表示文件类型
第一个42表示B,第二个4D表示M,bmp格式前两个字节默认是这两个
2~5字节 表示文件大小 bytes
6~9字节保留字 一般为0
10~13字节 位图数据的起始位置

2、位图信息头(14~53字节)

14~17字节 :信息头占用字节数 bytes
18~21字节 : 位图的宽度(像素)
22~25字节 :位图的高度(像素)
26~29字节 :表示位图色彩级别,一般为24
30~33字节 :表示压缩类型,0表示不压缩
34~37字节 :位图阵列表字节数
38~41字节 :表示水平分辨率
42~45字节 :表示垂直分辨率
46~49字节 :表示位图实际使用的颜色表中的颜色变址。
50~53字节 :表示位图显示过程中被认为重要颜色变址数。

3、彩色表 …
4、定义位图的字节阵列 …

注意
1、一个像素占的字节数=位深度/8
2、bmp格式存储的时候,每一行的总字节数必须等于4的倍数,如果不是4的倍数,会自动补0,所以存位图信息的时候要跳过自动补0的那些字节,具体计算见代码。
3、读取时以字节为单位倒着读取,比如文件大小2~5字节的数据记录为82 21 00 00,实际上文件大小是00002182

#include <bits/stdc++.h>
#define uint unsigned int
using namespace std;
struct BMP{
   
    unsigned char B;	//默认B
    unsigned char M;	//默认M
    uint fileSize;		//文件大小
    uint Reserved1;	//保留字
    uint headerLength; //头大小

    uint Infosize;	//位图信息头的长度 40 bytes
    uint width;
    uint height;	
    unsigned short level; //设备级别
    unsigned short colorDepth;	//色彩级别
    uint compress;	//压缩类型,0表示不压缩
    uint pexelBytes; //位图阵列表字节数
    uint horizon;	//水平分辨率
    uint vertical;	//垂直分辨率
    uint offset1;	//位图实际使用的颜色表中的颜色变址
    uint offset2;	//位图显示过程中被认为重要颜色变址数
}bmp;
void read(char *path) {
   
	FILE *f = fopen(path,"rb");
	fread(&bmp.B, 1, 1, f);
 	fread(&bmp.M, 1, 1, f);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值