【宏思微想:科技生活,技术开发】
一. BMP 简介
BMP是Bitmap的缩写,是Windows平台的一种图像文件格式。可以分成两类:设备相关位图DDB(Device Depandent Bitmap)和设备无关位图DIB(Device Independent Bitmap)。Windows3.0之前使用的是DDB位图,之后主要使用DIB位图,本文主要分析DIB位图,如无特别说明,本文所指BMP均是Windows DIB位图。
假定每一行实际数据所占的字节数为nBytePerWidth,则它们有如下计算关系:
Stride = (((biWidth*biBitCount 31)&(~31))>>5)<<2;
if(1==biBitCount)
{
if(Width<=8)
nBytePerWidth = 1;
else
{
nBytePerWidth = Width/8;
if(Width%8)
nBytePerWidth ;
}
}
else if(4==biBitCount)
{
if(Width<=2)
nBytePerWidth = 1;
else
{
nBytePerWidth = Width/2;
if(Width%2)
nBytePerWidth ;
}
}
else
nBytePerWidth = Width*(biBitCount>>3);
Padding = Stride - nBytePerWidth;
三. 常见BMP文件
常见BMP文件的格式以及它们的分析如下图:
下面分别给出上述各种常见BMP的十六进制视图,红色表示文件头部分,蓝色表示信息头,紫色表示颜色表或者颜色掩码表,黑色表示位图数据部分。
3.1 1bit
3.2 4bit
3.3 8bit
3.4 16bit A1R5G5B5
当压缩方式为BI_RGB时,X1R5G5B5等同于A1R5G5B5。
3.5 16bit R5G6B5
3.6 16bit X4R4G4B4
3.7 24bit R8G8B8
3.8 32bit A8R8G8B8
3.9 32bit X8R8G8B8
——————(完)——————
,