博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BMP图像存储格式
阅读量:6155 次
发布时间:2019-06-21

本文共 1729 字,大约阅读时间需要 5 分钟。

BMP有单色,16色,256色,24位,32位几种类型位图。

BMP在磁盘上是按以下顺序存储的:

  ---------------header部分开始----------------

[位图文件头TBitmapFileHeader]     // 14个字节

[位图信息头TBitmapInfo]               // 40个字节

  --------------- body部分开始 ----------------

[图像数据BGRA]                            // 32位位图含Alpha值

 

(1)位图文件头

typedef struct tagBITMAPFILEHEADER { // bmfh     WORD    bfType;           // 文件标识‘BM’    DWORD   bfSize;           // 用字节表示的整个文件的大小    WORD    bfReserved1;    // 保留字节,为0    WORD    bfReserved2;    // 保留字节,为0    DWORD   bfOffBits;        // 图象数据RGBA的起始地址的偏移值  为54} BITMAPFILEHEADER;

(2)位图信息头

typedef struct tagBITMAPINFOHEADER{ // bmih     DWORD  biSize;               // 位图信息头(Bitmap Info Header)的长度,为40      LONG   biWidth;               // 位图的宽度,以象素为单位    LONG   biHeight;              // 位图的高度,以象素为单位      WORD   biPlanes;             // 位图的位面数(注:该值将总是1)    WORD   biBitCount           // 每个象素的位数,设为24(表示24Bit位图)    DWORD  biCompression;    // 压缩说明,设为0(不压缩)    DWORD  biSizeImage;       // 用字节数表示的位图数据的大小(该数必须是4的倍数)    LONG   biXPelsPerMeter;   // 用象素/米表示的水平分辨率 (一般设为0)    LONG   biYPelsPerMeter;   // 用象素/米表示的垂直分辨率(一般设为0)    DWORD  biClrUsed;           // 位图使用的颜色数(一般设为0)    DWORD  biClrImportant;    // 指定重要的颜色数(一般设为0)} BITMAPINFOHEADER;

(3)图像数据BGRA

       单色:      1个bit表示1个像素

       16色:     4个bit表示1个像素

       256色:   8个bit表示1个像素

       24位:     24个bit表示1个像素       //BGR

       32位:     32个bit表示1个像素       //BGRA

 

  *** 数据存放顺序 ***

       

注:图片的左下角为图像文件数据块的起点,从左到右,从下到上依次存储图像各像素值。如上图所示!

 

(4)需要注意的几点

  a.  像素中个颜色分量顺序为 BGRA -- Blue  Green  Red  Alpha

以下是RGB宏的定义

#define RGB(r, g ,b)  ((DWORD) (((BYTE) (r) | \     ((WORD) (g) << 8)) | \     (((DWORD) (BYTE) (b)) << 16)))

可通过BYTE GetRValue(DWORD rgb)   BYTE GetGValue(DWORD rgb)    BYTE GetBValue(DWORD rgb)来获取各个分量的值。

  b. 对于数据区域而言,每行的数据它必须凑满4字节,如果没有满,则用冗余的数据来补齐。

      如:对于24位位图,假设一行有w个像素,那么一行的像素数为:4*((3*w+3)/4)   // 注意(3*w+3)/4是在做整除操作

 

参考: 

转载地址:http://wnffa.baihongyu.com/

你可能感兴趣的文章
Configuration python CGI in XAMPP in win-7
查看>>
bzoj 5006(洛谷 4547) [THUWC2017]Bipartite 随机二分图——期望DP
查看>>
CF 888E Maximum Subsequence——折半搜索
查看>>
欧几里德算法(辗转相除法)
查看>>
面试题1-----SVM和LR的异同
查看>>
MFC控件的SubclassDlgItem
查看>>
如何避免历史回退到登录页面
查看>>
《图解HTTP》1~53Page Web网络基础 HTTP协议 HTTP报文内的HTTP信息
查看>>
unix环境高级编程-高级IO(2)
查看>>
树莓派是如何免疫 Meltdown 和 Spectre 漏洞的
查看>>
雅虎瓦片地图切片问题
查看>>
HTML 邮件链接,超链接发邮件
查看>>
HDU 5524:Subtrees
查看>>
手机端userAgent
查看>>
pip安装Mysql-python报错EnvironmentError: mysql_config not found
查看>>
http协议组成(请求状态码)
查看>>
怎样成为一个高手观后感
查看>>
[转]VC预处理指令与宏定义的妙用
查看>>
MySql操作
查看>>
python 解析 XML文件
查看>>