VS2010 C++学习(2):BMP图像文件的处理 学习VC++编制的BMP 图像文件的处理程序.。 一、 主要内容: 1. BMP 图像文件的结构分析; 2. BMP 图像文件的读写; 3. BMP 图像文件的置固定值处理、反色处理、平滑处理; 二、 设计实现: 1. BMP图像文件的结构分析; A. BMP 文件结构 BMP 文件是 Windows 操作系统所推荐和支持的图像文件格式,是一种将内存或显示器的图像数据不经过压缩而直接按位存盘的文件格式,所以称为位图(bitmap)文件,因其文件扩展名为 BMP,故称为 BMP 文件格式,简称 BMP 文件。 BMP 图像文件被分成 4 个部分: 1) 位图文件头(Bitmap File Header )、 2) 位图信息头(Bitmap Info Header )、 3) 颜色表(Color Map) 4) 位图数据(即图像数据,Data Bits 或 Data Body)。 图 1 BMP 文件结构示意图 第 1 部分为位图文件头 BITMAPFILEHEADER,是一个结构体类型,该结构的长度是固定的,为 14 个字节。其定义如下: typedef struct tagBITMAPFILEHEADER { WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } BITMAPFILEHEADER, FAR *LPBITMAPFILEHEADER, *PBITMAPFILEHEADER; BITMAPFILEHEADER 结构的各个域详细说明如下: — bfType:位图文件类型,必须是 0x424D,即字符串“BM”,也就是说, 所有的“*.bmp”文件的头 两个字节都是“BM”。 — bfSize:位图文件大小,包括这 14 个字节。 — bfReserved1, bfReserved2:Windows 保留字,暂不用。 — bfOffBits:从文件头到实际的位图数据的偏移字节数,图 1 中前 3 个部分的长度之和。 第 2 部分为位图信息头 BITMAPINFOHEADER,也是一个结构体类型的数据结构,该结构的长度也是固定的,为 40 个字节(WORD 为无符号 16 位整数, DWORD 为无符号 32 位整数,LONG 为 32 位整数)。 其定义如下: 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, FAR *LPBITMAPINFOHEADER, *PBITMAPINFOHEADER; BITMAPINFOHEADER 结构的各个域的详细说明如下: —...