DIB图像基础

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,表示所有颜色一样重要。

本文章为网上资源个人总结

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值