BMP图像处理

 BMP

这儿有一张特别清晰的图片%%%

https://guyutongxue.github.io/img/BMP.png

查看代码
#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
int main(){
	//1字节 = 8 bit 
	cout<<sizeof(int)<<endl;// int = 4 字节 = 32位 
	cout<<sizeof(char)<<endl;// char = 1 字节 
	cout<<sizeof(long long)<<endl;// ll = 8 字节 
	return 0;
}
/*
一个字节8位,也就是两个16进制数(一个16进制数是4位)
所以每个0x0000 0x0001 0x0002 ....
都占一个字节,表示范围0-255

*/

 BMP 文件由文件头、位图信息头、颜色信息和图形数据四部分组成。 

1.文件头信息块
0000-0001:文件标识,为字母 ASCII 码“BM” 。
0002-0005:文件大小。
0006-0009:保留,每字节以“00” 填写。
000A-000D:记录图像数据区的起始位置。各字节的信息依次含义为:文件头信
息块大小, 图像描述信息块的大小,图像颜色表的大小,保留(为 01)。
 

 2.图像描述信息块
000E-0011:图像描述信息块的大小,常为 28H。
0012-0015:图像宽度。
0016-0019:图像高度。
001A-001B:图像的 plane 总数(恒为 1)。
001C-001D:记录像素的位数,很重要的数值,图像的颜色数由该值决定。
001E-0021:数据压缩方式(数值位 0:不压缩; 1: 8 位压缩; 2: 4 位压缩)。
0022-0025:图像区数据的大小。
0026-0029:水平每米有多少像素,在设备无关位图(.DIB)中,每字节以 00H
填写。
002A-002D:垂直每米有多少像素,在设备无关位图(.DIB)中,每字节以 00H
填写。
002E-0031:此图像所用的颜色数,如值为 0,表示所有颜色一样重要。

 3.颜色表
颜色表的大小根据所使用的颜色模式而定: 2 色图像为 8 字节; 16 色图像位
64 字节; 256 色图像为 1024 字节。其中,每 4 字节表示一种颜色,并以 B(蓝
色)、 G(绿色)、 R(红色)、 alpha(像素的透明度值,一般不需要)。即首
先 4 字节表示颜色号 0 的颜色,接下来表示颜色号 1 的颜色,依此类推

 4.图像数据区
颜色表接下来位为位图文件的图像数据区,在此部分记录着每点像素对应的
颜色号,其记录方式也随颜色模式而定,既 2 色图像每点占 1 位(8 位为 1 字节);
16 色图像每点占 4 位(半字节); 256 色图像每点占 8 位(1 字节);真彩色图
像每点占 24 位(3 字节)。所以,整个数据区的大小也会随之变化。究其规律
而言,可的出如下计算公式:图像数据信息大小=(图像宽度*图像高度*记录像
素的位数) /8。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值