原创 DIB图像基础

2010-3-31 14:33 2260 4 4 分类: 工程师职场

DDB 与设备相关的点阵图
DIB 与设备无关的点阵图
.Gif与.jpeg格式进行了压缩


.DIB文件格式来源自OS/2(1.1版本), 然后在windows3.0
使用了OS/2的点阵图格式.此时称为DIB。
程序能将DIB文件减去前14个位元组载入到连续的内存中
此时称为packed DIB格式的点阵图


DIB主要由四个部分组成
文件头, 信息头,RGB色彩对照表(不一定有), 点阵图图素位元(数据)
packed DIB没有文件头部分信息
文件头结构BITMAPFILEHEADER
typedef struct tagBITMAPFILEHEADER
{
WORD    bfType;       // 位图文件的类型,必须为BM
DWORD   bfSize;       // 位图文件的大小,以字节为单位
WORD    bfReserved1;  // 位图文件保留字,必须为0
WORD    bfReserved2;  // 位图文件保留字,必须为0
DWORD   bfOffBits;    // 位图数据的起始位置,以相对于位图
// 文件头的偏移量表示,以字节为单位
} BITMAPFILEHEADER;
WORD 占两个字节, DWORD占四个字节, 那么BITMAPFILEHEADER为14个字节


0000-0001:文件标识,为字母ASCII码“BM”。
0002-0005:文件大小。
0006-0009:保留,每字节以“00”填写。
000A-000D:记录图像数据区的起始位置。各字节的信息依次含义为:
           文件头信息块大小,图像描述信息块的大小,
           图像颜色表的大小,保留(为01)。


信息头结构
在OS/2中BITMAPFILEHEADER结构紧跟着BITMAPCOREHEADER结构
在windows中BITMAPFILEHEADER结构紧跟着BITMAPINFOHEADER结构
BITMAPINFOHEADER与BITMAPCOREHEADER性质是一样的,但在操作系统
的不同结构就不同
typedef struct tagBITMAPINFOHEADER{
DWORD  biSize;            // 本结构所占用字节数
LONG   biWidth;           // 位图的宽度,以像素为单位
LONG   biHeight;          // 位图的高度,以像素为单位
WORD   biPlanes;          // 目标设备的级别,必须为1
WORD   biBitCount;        // 每个像素所需的位数,必须是1(双色),
                          // 4(16色),8(256色)或24(真彩色)之一
DWORD  biCompression;     // 位图压缩类型,必须是 0(不压缩),
                          // 1(BI_RLE8压缩类型)或2(BI_RLE4压缩类型)之一
DWORD  biSizeImage;       // 位图的大小,以字节为单位
LONG   biXPelsPerMeter;   // 位图水平分辨率,每米像素数
LONG   biYPelsPerMeter;   // 位图垂直分辨率,每米像素数
DWORD  biClrUsed;         // 位图实际使用的颜色表中的颜色数
DWORD  biClrImportant;    // 位图显示过程中重要的颜色数
} BITMAPINFOHEADER;
000E-0011:图像描述信息块的大小,常为28H。
0012-0015:图像宽度。
0016-0019:图像高度。
001A-001B:图像的plane总数(恒为1)。
001C-001D:记录像素的位数,很重要的数值,图像的颜色数由该值决定。
001E-0021:数据压缩方式(数值位0:不压缩;1:8位压缩;2:4位压缩)。
0022-0025:图像区数据的大小。
0026-0029:水平每米有多少像素,在设备无关位图(.DIB)中,每字节以00H填写。
002A-002D:垂直每米有多少像素,在设备无关位图(.DIB)中,每字节以00H填写。
002E-0031:此图像所用的颜色数,如值为0,表示所有颜色一样重要。



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/okman1214/archive/2008/10/30/3183855.aspx

文章评论0条评论)

登录后参与讨论
我要评论
0
4
关闭 站长推荐上一条 /2 下一条