位图数据存储格式介绍

BMP是一种常见的图片格式,它由4部分组成,分别为位图文件头、位图信息头、调色板和图像数据。位图文件头的数据结构及其描述说明如下:

typedef struct tagBITMAPFILEHEADER { 
	WORD    bfType; 
	DWORD   bfSize; 
	WORD    bfReserved1; 
	WORD    bfReserved2; 
	DWORD   bfOffBits; 
} BITMAPFILEHEADER; 

位图文件头字段描述:

字 段 名 大小(单位:字节) 描 述
bfType 2 位图类别,此字段的值总为‘BM’
bfSize 4 BMP图像文件的大小
bfReserved1 2 总为0
bfReserved2 2 总为0
bfOffBits 4 BMP图像数据的地址

位图信息头由信息头的大小、图片宽度、图像高度、图像的色深等参数组成,其数据结构定义如下。

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;

位图信息头字段描述:

字 段 名 字节大小 描 述
biSize 4 本结构的大小,总是40字节
biWidth 4 BMP图像的宽度,单位像素
biHeight 4 总为0
biPlanes 2 总为0
biBitCount 2 色深,即一个像素用多少位表示
biCompression 4 压缩方式
biSizeImage 4 BMP图像数据大小
biXPelsPerMeter 4 水平分辨率,单位像素/m
biYPelsPerMeter 4 垂直分辨率,单位像素/m
biClrUsed 4 位图使用的颜色
biClrImportant 4 重要的颜色数量

本文不考虑彩色表,所以不做详细介绍。若采用RGB565格式保存,需要将压缩方式设置为3,即每个像素的值通过指定的掩码表示。在位图信息头数据信息后面紧接着的就是图像像素数据。

需要注意的是,像素数据在文件中的存储是先存储最后一行,然后依次向上,直到图像的第一行,行内数据是从左往右依次存放的。

发布了192 篇原创文章 · 获赞 318 · 访问量 28万+

猜你喜欢

转载自blog.csdn.net/zyxhangiian123456789/article/details/103628833