首页 > 代码库 > <<位图>>笔记
<<位图>>笔记
位图文件由三部分组成:文件头 + 位图信息 + 位图像素数据
位图文件头。位图文件头主要用于识别位图文件。以下是位图文件头结构的定义:
typedef struct tagBITMAPFILEHEADER { // bmfh WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } BITMAPFILEHEADER;
其中的bfType值应该是“BM”(0x4d42),标志该文件是位图文件。bfSize的值是位图文件的大小。
位图信息中所记录的值用于分配内存,设置调色板信息,读取像素值等。
以下是位图信息结构的定义:
typedef struct tagBITMAPINFO { BITMAPINFOHEADER bmiHeader; RGBQUAD bmiColors[1]; } BITMAPINFO;
可见位图信息也是由两部分组成的:位图信息头 + 颜色表
颜色表是由颜色表项组成的,颜色表项结构的定义如下:
typedef struct tagRGBQUAD { // rgbq BYTE rgbBlue; BYTE rgbGreen; BYTE rgbRed; BYTE rgbReserved; } RGBQUAD;
其中需要注意的问题是,RGBQUAD结构中的颜色顺序是BGR,而不是平常的RGB。
位图信息头包含了单个像素所用字节数以及描述颜色的格式,此外还包括位图的宽度、高度、目标设备的位平面数、图像的压缩格式。以下是位图信息头结构的定义:
typedef struct tagBITMAPINFOHEADER{ // bmih DWORD biSize; LONG biWidth; LONG biHeight; WORD biPlanes; WORD biBitCount DWORD biCompression; DWORD biSizeImage; LONG biXPelsPerMeter; LONG biYPelsPerMeter; DWORD biClrUsed; DWORD biClrImportant; } BITMAPINFOHEADER;
下表是对结构体当中各个成员的说明:
结构成员 |
说 明 |
biSize | 结构BITMAPINFOHEADER的字节数,即sizeof(BITMAPINFOHEADER)* |
biWidth |
以像素为单位的图像宽度* |
biHeight |
以像素为单位的图像长度* |
biplanes |
目标设备的位平面数 |
biBitCount |
每个像素的位数*(1) |
biCompression |
图像的压缩格式(这个值几乎总是为0) |
biSizeImage |
以字节为单位的图像数据的大小(对BI_RGB压缩方式而言) |
biXPelsPermeter |
水平方向上的每米的像素个数 |
biYpelsPerMeter |
垂直方向上的每米的像素个数 |
biClrused |
调色板中实际使用的颜色数(2) |
biClrImportant |
现实位图时必须的颜色数(3) |
说明:*是需要加以注意的部分,因为它们是我们在进行位图操作时经常参考的变量
<<位图>>笔记
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。