认识BitMap

Bitmap由四个部分组成,分别为:

1.位图文件头:

结构体如下:

	typedef struct tagBITMAPFILEHEADER {
		WORD    bfType;              //文件类型("BM")
		DWORD   bfSize;              //文件大小
		WORD    bfReserved1;         //保留字段0
		WORD    bfReserved2;         //保留字段0
		DWORD   bfOffBits;           //图像文件到文件头起始的偏移量
	} BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER, *PBITMAPFILEHEADER;

2.位图信息头:

结构体如下:

typedef struct tagBITMAPINFOHEADER {
	DWORD      biSize;           //本结构体占用大小
	LONG       biWidth;          //图像宽度(单位:像素)
	LONG       biHeight;         //图像高度(单位:像素)
	WORD       biPlanes;         //设备上图像平面数,必须为1
	WORD       biBitCount;       //存储每个像素需要的二进制位数(1:单色;4:16色;8:256色;16:64K色(高彩色);24:16M色(真彩色);32:4096M色(增强型真彩色))
	DWORD      biCompression;    //是否压缩存储图像数据
	DWORD      biSizeImage;      //指定图像大小(单位:字节)
	LONG       biXPelsPerMeter;  //水平方向分辨率
	LONG       biYPelsPerMeter;  //竖直方向分辨率
	DWORD      biClrUsed;        //实际图像使用颜色表中的颜色数
	DWORD      biClrImportant;   //重要的颜色数(0表示所有都重要)
} BITMAPINFOHEADER, FAR *LPBITMAPINFOHEADER, *PBITMAPINFOHEADER;

3.调色板:

结构体如下:

typedef struct tagRGBQUAD {
	BYTE    rgbBlue;             //蓝色分量
	BYTE    rgbGreen;            //绿色分量
	BYTE    rgbRed;              //红色分量
	BYTE    rgbReserved;         //保留值
} RGBQUAD;

4.位图数据:

实际位图数据是一片连续的存储区域,其中保存着图像中每个像素的灰度(颜色)信息。
(1)256色灰度图像:图像数据就是该像素的实际灰度,1个像素需要1个字节来表示。

(2)索引图像:图像数据就是该像素颜色在调色板中的索引值。

(3)真彩色图:图像数据就是实际的RGB值,1个像素需要3个字节来表示。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章