概述
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,表示所有颜色一样重要。
本文章为网上资源个人总结
最后
以上就是虚幻画笔为你收集整理的DIB图像基础的全部内容,希望文章能够帮你解决DIB图像基础所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复