- 按照颜色深度分类,常用图像文件分为:
黑白图像(二值图像):由0与1表示像素
8位灰度索引图像:256种灰度级
8位伪彩色索引图像:256种颜色
24位真彩色图像:R 256 G 256 B256
- BMP文件存储组成
1. 位图文件头(BITMAPFILEHEADER)14字节
typedef struct tagBITMAPFILEHEADER {
WORD bfType; // 存储内容即“BM” 两个字节
DWORD bfSize; // 文件大小 四个字节
WORD bfReserved1; //保留字,默认是0,下同
WORD bfReserved2; //保留字
DWORD bfOffBits; //位图数据文件头的偏移量(位图数据的起始位置):位图文件头+位图信息头+调色板大小
} BITMAPFILEHEADER, *PBITMAPFILEHEADER;
注意:Windows的数据是倒着读的
2. 位图信息头(BITMAPINFOHEADER)40字节
typedef struct tagBITMAPINFOHEADER{
DWORD biSize; //位图信息头的大小
LONG biWidth; //位图像素宽度
LONG biHeight; //位图像素高度
WORD biPlanes; //固定值1
WORD biBitCount; //像素位数
DWORD biCompression; //压缩方式 BI_RGB(0)不压缩
DWORD biSizeImage; //位图数据的字节数
LONG biXPelsPerMeter; //水平分辨率(像素点/米)
LONG biYPelsPerMeter; //垂直分辨率(像素点/米)
DWORD biClrUsed; //位图使用的颜色数,0代表2的biBitCount(像素位数)次方
DWORD biClrImportant; //重要颜色数,0代表都重要
} BITMAPINFOHEADER, *PBITMAPINFOHEADER;
3. 调色板(Palette)256*4=1024字节其中24位真彩图没有调色板
4. 位图数据(ImageDate)