【IoT】 产品研发:位深为1的BMP格式图片详解
1、数据结构一typedef struct tagBITMAPFILEHEADER {
WORD bfType; //类型名,字符串“BM”,
DWORD bfSize; //文件大小
WORD bfReserved1; //保留字
WORD bfReserved2; //保留字
DWORD bfOffBits; //实际位图数据的偏移字节数,即前三个部分长度之和
} BITMAPFILEHEADER;
对应数据:
WORD bfType : 0x4d42
DWORD bfSize:0x16cbe
WORD bfReserved1:0x0
WORD bfReserved2:0x0
DWORD bfOffBits:0x3e
2、数据结构二
typedef struct tagBITMAPINFOHEADER {
DWORD biSize; //指定此结构体的长度,0x28
LONG biWidth; //位图宽
LONG biHeight; //位图高.为正,表示从下往上存储,左下角是起点。为负,表示从上往下储存,左上角是起点
WORD biPlanes; //平面数,为1
WORD biBitCount //采用颜色位数,可以是1,2,4,8,16,24,32
DWORD biCompression; //压缩方式,可以是0,1,2,其中0表示不压缩
DWORD biSizeImage; //实际位图数据占用的字节数
LONG biXPelsPerMeter; //X方向分辨率
LONG biYPelsPerMeter; //Y方向分辨率
DWORD biClrUsed; //使用的颜色数,如果为0,则表示默认值(2^颜色位数)
DWORD biClrImportant; //重要颜色数,如果为0,则表示所有颜色都是重要的
} BITMAPINFOHEADER;
对应数据:
DWORD biSize:0x28
LONG biWidth:0x480
LONG biHeight:0x288
WORD biPlanes:0x1
WORD biBitCount:0x1
DWORD biCompression:0x0
DWORD biSizeImage:0x16c80
LONG biXPelsPerMeter:0x0
LONG biYPelsPerMeter:0x0
DWORD biClrUsed:0x0
DWORD biClrImportant:0x0
3、数据结构三
1位位图有调色板2^1=2个
对应是以下结构的数组:
typedef struct tagRGBQUAD {
BYTE rgbBlue; //蓝色
BYTE rgbGreen; //绿色
BYTE rgbRed; //红色
BYTE rgbReserved; //保留值,常用于Alpha透明值
} RGBQUAD;
索引0:(B,G,R,A)=(0x0,0x0,0x0,0x0)
索引1:(B,G,R,A)=(0xff,0xff,0xff,0x0)
两个索引占用8个字节,之后都是数据区,数据紧密排列,无对齐操作。
数据区操作方法:每次取一个字节,此字节的第7位到第0位是读取顺序。
文档来源:51CTO技术博客https://blog.51cto.com/u_15284384/3052374
页:
[1]