我是靠谱客的博主 心灵美斑马,最近开发中收集的这篇文章主要介绍Bitmap文件格式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Bitmap文件格式详解

位图是Windows标准格式的图形文件。它将图像定义为由像素组成,每个点可以由多种色彩表示。位图文件图像效果好,但是非压缩格式的,需要占用较大存储空间,不利于在网络上传送。jpg格式则恰好弥补了位图文件这个缺点。

位图文件格式如下表所示:

 

 

BITMAPFILEHEADER 的结构

typedef struct tagBITMAPFILEHEADER 

WORD           bfType;              指定文件类型,必须是0x424D,即字符串“BM”,也就是说所有.bmp文件的头两个字节都是“BM

DWORD        bfSize;                指定文件大小,包括这14个字节。

WORD           bfReserved1;     为保留字,不用考虑

WORD           bfReserved2;     为保留字,不用考虑

DWORD         bfOffBits;           为从文件头到实际的位图数据的偏移字节数。

} BITMAPFILEHEADER; 

 

BITMAPINFOHEADER 的结构

typedef struct tagBITMAPINFOHEADER 

DWORD         biSize;               指定这个结构的长度,为40 

LONG             biWidth;            指定图象的宽度,单位是象素

LONG             biHeight;           指定图象的高度,单位是象素

WORD           biPlanes;           必须是1,不用考虑

WORD           biBitCount         指定表示颜色时要用到的位数,常用的值为1(黑白二色图), 4(16色图), 8(256), 24(真彩色图),32。

DWORD        biCompression; 指定位图是否压缩,有效的值为BI_RGBBI_RLE8BI_RLE4BI_BITFIELDS(都是一些Windows定义好的常量)。要说明的是,Windows位图可以采用RLE4,和RLE8的压缩格式,但用的不多。我们今后所讨论的只有第一种不压缩的情况,即biCompressionBI_RGB的情况。

DWORD        biSizeImage;      指定实际的位图数据占用的字节数,其实也可以从以下的公式中计算出来:biSizeImage=biWidth’ × biHeight 

要注意的是:上述公式中的biWidth’必须是4的整倍数(所以不是biWidth,而是biWidth’,表示大于或等于biWidth的,最接近4的整倍数。举个例子,如果biWidth=240,则biWidth’=240;如果biWidth=241biWidth’=244)如果biCompressionBI_RGB,则该项可能为零。 

LONG            biXPelsPerMeter; 指定目标设备的水平分辨率,单位是每米的象素个数。

LONG            biYPelsPerMeter; 指定目标设备的垂直分辨率,单位同上。

DWORD       biClrUsed;           指定本图象实际用到的颜色数,如果该值为零,则用到的颜色数为2biBitCount。

DWORD       biClrImportant;   指定本图象中重要的颜色数,如果该值为零,则认为所有的颜色都是重要的。

} BITMAPINFOHEADER;

 

RGBQUAD 的结构

typedef struct tagRGBQUAD 

BYTE           rgbBlue;              该颜色的蓝色分量

BYTE           rgbGreen;           该颜色的绿色分量

BYTE           rgbRed;              该颜色的红色分量

BYTE           rgbReserved;      保留值

} RGBQUAD;

 

下面是一幅具体的Bitmap图像的存储数据

一般来说,.bMP文件的数据从下到上,从左到右的。也就是说,从文件中最先读到的是图象最下面一行的左边第一个象素,然后是左边第二个象素……接下来是倒数第二行左边第一个象素,左边第二个象素……依次类推,最后得到的是最上面一行的最右一个象素。要注意的一点是在BMP位图中,位图的每行像素值要填充到一个四字节边界,即位图每行所占的存储长度为四字节的倍数,不足时将多余位用0填充。

 

 

 

 

#图像处理

最后

以上就是心灵美斑马为你收集整理的Bitmap文件格式的全部内容,希望文章能够帮你解决Bitmap文件格式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部