文章来自于:http://hi.baidu.com/shangxing214/blog/item/4b1fec22d2eacd4cac34de6d.html
正文:
-------------------------------------------------------------------------------------------------------------------
位图信息头BITMAPINFOHEADER,也是一个结构,其定义如下:
typedef struct tagBITMAPINFOHEADER{
DWORD biSize;
LONG biWidth;
LONG biHeight;
WORD biPlanes;
WORD biBitCount
DWORD biCompression;
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
} BITMAPINFOHEADER;
这个结构的长度是固定的,为40个字节(LONG为32位整数),各个域的说明如下:
biSize
指定这个结构的长度,为40。
biWidth
指定图象的宽度,单位是象素。
biHeight
指定图象的高度,单位是象素。
biPlanes
必须是1,不用考虑。
biBitCount
指定表示颜色时要用到的位数,常用的值为1(黑白二色图), 4(16色图), 8(256色), 24(真彩色图)(新的.bmp格式支持32位色,这里就不做讨论了)。
biCompression
指定位图是否压缩,有效的值为BI_RGB,BI_RLE8,BI_RLE4,BI_BITFIELDS(都是一些Windows定义好的常量)。要说明的是,Windows位图可以采用RLE4,和RLE8的压缩格式,但用的不多。我们今后所讨论的只有第一种不压缩的情况,即biCompression为BI_RGB的情况。
biSizeImage
指定实际的位图数据占用的字节数,其实也可以从以下的公式中计算出来:
biSizeImage=biWidth’ × biHeight
要注意的是:上述公式中的biWidth’必须是4的整倍数(所以不是biWidth,而是biWidth’,表示大于或等于biWidth的,最接近4的整倍数。举个例子,如果biWidth=240,则biWidth’=240;如果biWidth=241,biWidth’=244)。
如果biCompression为BI_RGB,则该项可能为零
biXPelsPerMeter
指定目标设备的水平分辨率,单位是每米的象素个数,关于分辨率的概念。
biYPelsPerMeter
指定目标设备的垂直分辨率,单位同上。
biClrUsed
指定本图象实际用到的颜色数,如果该值为零,则用到的颜色数为2biBitCount。
biClrImportant
指定本图象中重要的颜色数,如果该值为零,则认为所有的颜色都是重要的。
分享到:
相关推荐
3. **添加信息头**:为了使位图符合标准格式,我们需要为其添加位图信息头(BitmapInfoHeader)。这可以通过创建BitmapData对象并设置其结构来完成。信息头包括位图的宽度、高度、色彩位深等信息。具体实现如下: ``...
2、 第二部分为位图信息头BITMAPINFOHEADER,它也是一个结构,其定义如下: typedef struc tagBITMAPINFOHEADER{ DWORD biSize; LONG biWidth; LONG biHeight; WORD biPlanes; WORD biBitCount; DWORD ...
2. 位图信息头 BITMAPINFOHEADER 3. 调色板 4. 图像的实际数据 BITMAPFILEHEADER BITMAPFILEHEADER 结构体用于存储文件头信息,包括文件类型、文件大小、保留字节、保留字节、从文件头到实际位图数据的偏移字节数。...
- **位图信息头BITMAPINFOHEADER**:这个结构体提供了关于位图的详细信息,如宽度、高度、位深度、压缩方式等。 - **调色板Palette**:对于非真彩色的位图,调色板包含了所有颜色的RGB值,用于映射位图中的颜色...
BMP文件的结构由四个关键部分组成:文件头、位图信息头、颜色信息和图形数据。 1. **文件头**:文件头是BMP文件的起点,包含了文件的基本属性信息。它由BITMAPFILEHEADER结构体定义,包含以下字段: - `bfType`:...
位图信息头BITMAPINFOHEADER,提供更详细的图像描述,如宽度、高度、颜色深度等;调色板(如果图像不是真彩色),存储颜色索引与RGB值的对应关系;最后是实际的像素数据,按照从下到上,从右到左的顺序排列。 了解...
BMP图片文件主要分为三个部分:文件信息头BITMAPFILEHEADER、位图信息头BITMAPINFOHEADER和RGB颜色阵列。 文件信息头BITMAPFILEHEADER结构体定义如下: ```c typedef struct tagBITMAPFILEHEADER { UINT bfType; ...
2. **位图信息头(BITMAPINFOHEADER)**:这部分包含了图像的宽度、高度、色彩深度等信息,长度固定为40字节。 3. **颜色表**:对于调色板模式下的图像,这里会存放一个颜色表,每个颜色占用4字节。 4. **像素数据**...
BMP图像文件由四部分组成:文件头、位图信息头、颜色信息和图形数据。 文件头 文件头数据结构中包含了BMP文件的类型、文件大小和位图起始位置等信息。其结构定义如下: typedef struct tagBITMAPFILEHEADER{ WORD...
2.信息头 3.RGB掩码(如果有的话) 显示出来的形式如下: BITMAPFILEHEADER* = 0x02800048 BITMAPFILEHEADER .bfType = 0x4D42 .bfSize = 552158 .bfReserved1 = 0 .bfReserved2 = 0 .bfOffBits = 66 ...
在这个例子中,`bmpStruct.h`应该包含了`BITMAPFILEHEADER`和`BITMAPINFOHEADER`的定义,这两个结构体分别对应BMP文件的文件头和位图信息头。`writeBMP`函数接收图像的尺寸和数据,然后按照BMP格式的规范写入文件。...
1. 写文件头:根据图像宽度、高度和色彩深度计算文件头中的信息,包括位图信息头BITMAPINFOHEADER的大小、图像宽度、图像高度、色彩平面数量(通常是1)和位深度(如24位表示RGB每个通道8位)等,并将这些信息写入...
2. **位图信息头BITMAPINFOHEADER**:紧接着文件头,是一个40字节的结构体,提供了图像的宽度、高度、色彩深度、压缩方式等详细信息。 3. **调色板Palette**:如果图像使用了调色板,这部分会存储颜色表,每个颜色...
其次是位图信息头BITMAPINFOHEADER,存储了图像的宽度、高度、色彩深度等关键属性;接下来是调色板Palette,主要用于非真彩色图像,用于记录颜色信息;最后是实际的位图数据ImageData,包含了像素的RGB值或调色板中...
// 设置位图信息头 BITMAPINFOHEADER bih; bih.biBitCount = btm.bmBitsPixel; bih.biClrImportant = 0; bih.biClrUsed = 0; bih.biCompression = 0; bih.biHeight = btm.bmHeight; bih.biPlanes = 1; bih....
- 接着是40字节的Windows位图信息头BITMAPINFOHEADER,包含图像的宽度、高度、色彩深度、压缩类型等信息。 2. **图像数据**: - BMP文件的图像数据是按行优先的方式存储的,从图像的最底部行开始,逐行向上存储,...
// 创建文件头和位图信息头 BITMAPINFOHEADER bih = {0}; bih.biBitCount = bmp.bmBitsPixel; bih.biCompression = BI_RGB; bih.biHeight = bmp.bmHeight; bih.biPlanes = 1; bih.biSize = sizeof...
2. **位图信息头 BITMAPINFOHEADER** - 长度为40字节 - 内容: - biSize:文件信息头结构大小 - biWidth:图像宽度(像素) - biHeight:图像高度(像素) - biPlanes:总被置1 - biBitCount:比特/像素(1、...
同时,由于BMP文件格式固定,我们需要对文件结构有深入理解,包括位图信息头(BITMAPINFOHEADER)、位图文件头(BITMAPFILEHEADER)等。 在实际编程中,还需要注意错误处理,确保在文件操作过程中出现异常时能够...
这些信息可以通过位图信息头结构体BITMAPINFOHEADER来获取。 在MFC中,我们通常使用CView或CScrollView作为视图类来显示图像。通过重写OnDraw函数,我们可以使用CDC类(Device Context)提供的绘图函数,如Draw...