评论

收藏

[网络数据] 【IoT】 产品研发:位深为1的BMP格式图片详解

网络安全 网络安全 发布于:2021-07-13 09:18 | 阅读数:520 | 评论:0

  1、数据结构一
  typedef struct tagBITMAPFILEHEADER {
  WORD bfType; //类型名,字符串“BM”,
  DWORD bfSize; //文件大小
  WORD bfReserved1; //保留字
  WORD bfReserved2; //保留字
  DWORD bfOffBits; //实际位图数据的偏移字节数,即前三个部分长度之和
  } BITMAPFILEHEADER;
  对应数据:
DSC0000.png

  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;
  对应数据:
DSC0001.png

  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位是读取顺序。
  
 

  
关注下面的标签,发现更多相似文章