• 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。
     
     

  • 相关阅读:
    最详细易懂的CRC-16校验原理(附源程序)(转)
    深入理解Java的接口和抽象类(转)
    同步、更新、下载Android Source & SDK from 国内镜像站(转载)
    django字段查询参数及聚合函数
    django不返回QuerySets的API
    django查询集API
    django查询操作
    django用包来组织模型
    django模型的继承
    django模型的元数据Meta
  • 原文地址:https://www.cnblogs.com/liankewei/p/16085769.html
Copyright © 2020-2023  润新知