起始结构

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

紧跟着是

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

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)

之后都是数据区,数据紧密排列,无对齐操作

此1位位图,数据区操作方法:每次取一个字节,此字节的第7位到第0位是读取顺序。

代码实现

由于采用CreateDIBSection可以让微软自带的GDI去解析(包括解码压缩类型),我们需要做的就是定位位图的数据区域就行了。具体实现代码,放在本系列的最后!!!

BMP位图之1位位图(一)的更多相关文章

  1. BMP位图之8位位图(三)

    起始结构 typedef struct tagBITMAPFILEHEADER { WORD bfType; //类型名,字符串"BM", DWORD bfSize; //文件大小 ...

  2. BMP位图之4位位图(二)

    起始结构 typedef struct tagBITMAPFILEHEADER { WORD bfType; //类型名,字符串"BM", DWORD bfSize; //文件大小 ...

  3. windows设备相关位图与设备无关位图

    windows支持两种位图格式,DDB(device-dependent bitmap),DIB(device-independent bitmap).设备相关位图用于windows显示系统中,其图像 ...

  4. bmp文件格式中rgb555与rgb888之间的转换,24位与16位位图的转换

    今日,有同事问我.rgb555模式下的位图文件的格式问题,于是花了一下午的时间通过推測与測试,分析出了例如以下bmp文件在rgb555模式下的文件存储规律: 1:bmp文件的文件信息头中的biBitC ...

  5. 为什么24位位图(真彩色)的biSizeImage不等于(biWidth*biBitCount+31)/32*4*biHeight?

    规定的,规定BMP文件的像素数据是按行存储的,而且每行的字节数必须为4的倍数,如果实际的像素数据不是4的倍数咋办?这就需要字节对齐,对齐是在一行的末尾添0以补足一行的字节数为4的倍数, ( biWid ...

  6. SharpDX之Direct2D教程II——加载位图文件和保存位图文件

    本系列文章目录: SharpDX之Direct2D教程I——简单示例和Color(颜色) 绘制位图是绘制操作的不可缺少的一部分.在Direct2D中绘制位图,必须先利用WIC组件将位图加载到内存中,再 ...

  7. oracle 表空管理方式(LMT)、ASSM段管理方式、一级位图块、二级位图块、三级位图块。

    今天是2013-12-16,今天和明天是我学习oracle生涯中一个特殊的日子.今天晚上进行了一下表空间管理方式的学习,在此记录一下笔记. 对于oracle数据库最小i/0单位是数据块,最想分配空间单 ...

  8. Android系统移植与调试之------->如何使用PhotoShop转换24位的bmp图片为16位bmp图片

    使用Android移植时候,很多图片都需要16为的bmp格式,所以研究了一下如何从24位转换成16位,供大家参阅 step1:查看bmp图片的属性,如下图所示,是24位的 step2:用PhotoSh ...

  9. mfc 位图本地存储 本地位图读取显示

    一.读取CImage //在绘图函数中直接使用参数pDC,无需定义 CDC* pDC = GetDC(): //读去位图路径,根据实际情况修改 CString loatImagePath = TEXT ...

随机推荐

  1. 安装Samba到CentOS(YUM)

    运行环境 系统版本:CentOS Linux release 7.3.1611 软件版本:Samba-4.6.2 硬件要求:无 安装过程 1.基础网络配置 配置一个静态IP,关闭防火墙.SeLinux ...

  2. STM32 CubeMx使用教程

    一.STM32CubeMX 简介 STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具,目的就是为了方便开发者, 允许用户使用图形化向导生成C 初始化代码,可以 ...

  3. 题解0014:信奥一本通1472——The XOR Largest Pair(字典树)

    题目链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1472 题目描述:在给定的 N 个整数中选出两个进行异或运算,求得到的结果最大是多少. 看到这 ...

  4. java通过socket实现https get 请求网页

    1. 首先要初始化ssl context SSLContext context = SSLContext.getDefault(); socket = (SSLSocket) context.getS ...

  5. java基础内存分配介绍

      java内存分配介绍 栈 堆 方法区 本地方法栈 寄存器   方法区:字节码文件加载时进入的内存. 栈内存:方法运行时所进入的内存,变量也在这里. 堆内存:new出来的东西在这块内存中开辟空间并且 ...

  6. 开发工具-Java SDK下载地址

    更新记录 2022年6月14日 加入更多的下载地址. 2022年6月10日 完善标题. 下载地址: https://www.oracle.com/java/technologies/downloads ...

  7. 2.如何正确理解古典概率中的条件概率《zobol的考研概率论教程》

    写本文主要是帮助粉丝理解考研中的古典概率-条件概率的具体定义. "B事件发生的条件下,A事件发生的概率"? "在A集合内有多少B的样本点"? "在B约 ...

  8. 【python基础】第06回 运算符和流程控制 1

    本章内容概要 1.运算符 2.流程控制 本章内容详解 1.运算符 什么是运算符? 运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算.例如:2+3,其操作数是2和3,而运算符则是" ...

  9. 基于Vue2.x的前端架构,我们是这么做的

    通过Vue CLI可以方便的创建一个Vue项目,但是对于实际项目来说还是不够的,所以一般都会根据业务的情况来在其基础上添加一些共性能力,减少创建新项目时的一些重复操作,本着学习和分享的目的,本文会介绍 ...

  10. CesiumJS 2022^ 源码解读[0] - 文章目录与源码工程结构

    很高兴你能在浮躁的年代里还有兴趣阅读源代码,CesiumJS 至今已有十年以上,代码量也积累了三十多万行(未压缩状态). 我也很荣幸自己的文章能被读者看到,如果对你有帮助.有启发,点个赞就是对我最大的 ...