怎么让网速变快-屏幕录像专家下载

bmp
2023年4月4日发(作者:wireshark 下载)

BMP编码详细结构

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

1、BMP文件头(14B):BMP文件头数据结构含有BMP文件的类型、文件大小和位图

起始位置等信息。

typedefstructtagBITMAPFILEHEADER{

WORDbfType;//位图文件的类型,必须为BM00-01h

DWORDbfSize;//位图文件的大小,以字节为单位02-05h

WORDbfReserved1;//位图文件保留字,必须为006-07h

WORDbfReserved2;//位图文件保留字,必须为008-09h

DWORDbfOffBits;//位图数据的起始位置,以相对于位图文件头的偏移量表示,以字节为

单位0a-0dh

}BITMAPFILEHEADER;

2、位图信息头(40B):BMP位图信息头数据用于说明位图的尺寸等信息。

typedefstructtagBITMAPINFOHEADER{

DWORDbiSize;//本结构所占用字节数0e-11h

LONGbiWidth;//位图的宽度,以像素为单位12-15h

LONGbiHeight;//位图的高度,以像素为单位16-19h

WORDbiPlanes;//目标设备的级别,必须为11a-1bh

WORDbiBitCount//每个像素所需的位数,必须是1(双色),4(16色),8(256色)或24(真彩

色)之一1c-1dh

DWORDbiCompression;//位图压缩类型,必须是0(不压缩),1(BI_RLE8压缩类型)或

2(BI_RLE4压缩类型)之一1e-21h

DWORDbiSizeImage;//位图数据的大小,以字节为单位22-25h

LONGbiXPelsPerMeter;//位图水平分辨率,每米像素数26-29h

LONGbiYPelsPerMeter;//位图垂直分辨率,每米像素数2a-2dh

DWORDbiClrUsed;//位图实际使用的颜色表中的颜色数2e-31h

DWORDbiClrImportant;//位图显示过程中重要的颜色数32-35h

}BITMAPINFOHEADER;

3、颜色表:颜色表用于说明位图中的颜色,它有若干个表项,每一个表项是一个RGBQUAD

类型的结构,定义一种颜色。

typedefstructtagRGBQUAD{

BYTErgbBlue;//蓝色的亮度(值范围为0-255)

BYTErgbGreen;//绿色的亮度(值范围为0-255)

BYTErgbRed;//红色的亮度(值范围为0-255)

BYTErgbReserved;//保留,必须为0

}RGBQUAD;

颜色表中RGBQUAD结构数据的个数有biBitCount来确定:

当biBitCount=1,4,8时,分别有2,16,256个表项;

当biBitCount=24时,没有颜色表项。

位图信息头和颜色表组成位图信息,BITMAPINFO结构定义如下:

typedefstructtagBITMAPINFO{

BITMAPINFOHEADERbmiHeader;//位图信息头

RGBQUADbmiColors[1];//颜色表

}BITMAPINFO;

4、位图数据:位图数据记录了位图的每一个像素值,记录顺序是在扫描行内是从左到右,

扫描行之间是从下到上。位图的一个像素值所占的字节数:

当biBitCount=1时,8个像素占1个字节;

当biBitCount=4时,2个像素占1个字节;0X1F

当biBitCount=8时,1个像素占1个字节;0X1F=31

当biBitCount=24时,1个像素占3个字节;

biBitCount=1表示位图最多有两种颜色,缺省情况下是黑色和白色,你也可以自己定义

这两种颜色。图像信息头装调色板中将有两个调色板项,称为索引0和索引1。图象数据阵

列中的每一位表示一个象素。如果一个位是0,显示时就使用索引0的RGB值,如果位是

1,则使用索引1的RGB值。

biBitCount=16表示位图最多有65536种颜色。每个色素用16位(2个字节)表示。这

种格式叫作高彩色,或叫增强型16位色,或64K色。它的情况比较复杂,当biCompression

成员的值是BI_RGB时,它没有调色板。16位中,最低的5位表示蓝色分量,中间的5位

表示绿色分量,高的5位表示红色分量,一共占用了15位,最高的一位保留,设为0。这

种格式也被称作55516位位图。如果biCompression成员的值是BI_BITFIELDS,那么情况

就复杂了,首先是原来调色板的位置被三个DWORD变量占据,称为红、绿、蓝掩码。分

别用于描述红、绿、蓝分量在16位中所占的位置。在Windows95(或98)中,系统可接受

两种格式的位域:555和565,在555格式下,红、绿、蓝的掩码分别是:0x7C00、0x03E0、

0x001F,而在565格式下,它们则分别为:0xF800、0x07E0、0x001F。你在读取一个像素

之后,可以分别用掩码“与”上像素值,从而提取出想要的颜色分量(当然还要再经过适当的

左右移操作)。在NT系统中,则没有格式限制,只不过要求掩码之间不能有重叠。(注:这

种格式的图像使用起来是比较麻烦的,不过因为它的显示效果接近于真彩,而图像数据又比

真彩图像小的多,所以,它更多的被用于游戏软件)。

biBitCount=32表示位图最多有4294967296(2的32次方)种颜色。这种位图的结构与16

位位图结构非常类似,当biCompression成员的值是BI_RGB时,它也没有调色板,32位中

有24位用于存放RGB值,顺序是:最高位—保留,红8位、绿8位、蓝8位。这种格式

也被成为88832位图。如果biCompression成员的值是BI_BITFIELDS时,原来调色板的

位置将被三个DWORD变量占据,成为红、绿、蓝掩码,分别用于描述红、绿、蓝分量在

32位中所占的位置。在Windows95(or98)中,系统只接受888格式,也就是说三个掩码的

值将只能是:0xFF0000、0xFF00、0xFF。而在NT系统中,你只要注意使掩码之间不产生

重叠就行。(注:这种图像格式比较规整,因为它是DWORD对齐的,所以在内存中进行图

像处理时可进行汇编级的代码优化(简单))。

更多推荐

bmp