Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1266640
  • 博文数量: 960
  • 博客积分: 52560
  • 博客等级: 大将
  • 技术积分: 13131
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-31 14:15
文章分类

全部博文(960)

文章存档

2011年(1)

2008年(959)

我的朋友

分类: C/C++

2008-08-01 16:56:07

下载本文示例代码
二、位图文件读写操作

  1. 类的声明
  2. 位图的读取
  3. 位图读取过程中的调色板的创建和调用
  4. 位图的显示
  5. 位图的存储
  6. 新位图的创建
  7. 其它问题

三、CFG_DIB的使用


下载本文配套代码

关于位图文件操作的资料很多。为了方便开发人员的工作,写下本文,介绍了位图文件结构,在此基础之上设计了通用类CFG_DIB,用于进行位图文件的读写操作。

一、位图文件结构

位图文件由三部分组成:文件头 位图信息 位图像素数据

1、位图文件头。位图文件头主要用于识别位图文件。以下是位图文件头结构的定义:

typedef struct tagBITMAPFILEHEADER { // bmfh 

    WORD    bfType; 

    DWORD   bfSize; 

    WORD    bfReserved1; 

    WORD    bfReserved2; 

    DWORD   bfOffBits; 

} BITMAPFILEHEADER;
其中的bfType值应该是“BM”(0x4d42),标志该文件是位图文件。bfSize的值是位图文件的大小。
2、位图信息中所记录的值用于分配内存,设置调色板信息,读取像素值等。
以下是位图信息结构的定义:

typedef struct tagBITMAPINFO {

    BITMAPINFOHEADER    bmiHeader;

    RGBQUAD             bmiColors[1];

} BITMAPINFO;

可见位图信息也是由两部分组成的:位图信息头 颜色表



2.1位图信息头。位图信息头包含了单个像素所用字节数以及描述颜色的格式,此外还包括位图的宽度、高度、目标设备的位平面数、图像的压缩格式。以下是位图信息头结构的定义:
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)
阅读(350) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~