win32汇编 屏幕截图保存BMP 学习笔记<第四篇>之生成BMP文件

C语言读入bmp图像 图像高度(4字节):以像素为单位,表示图像的高度。如果为正值,图像是正向的(从上到下),如果为负值,图像是反向的(从下到上)。对于24位真彩色的BMP图像,图像数据部分以蓝色、绿色和红色的顺序依次表示一个像素的颜色,每个颜色通道占用1字节。- 图像数据大小(4字节):以字节为单位,表示图像数据的大小。- 使用的颜色数(4字节):通常为0,表示使用所有可能的颜色。- 重要的颜色数(4字节):通常为0,表示所有颜色都是重要的。- 图像宽度(4字节):以像素为单位,表示图像的宽度。 阅读详情

到目前BMP内容已经生成在内存
可是不能直接保存为BMP文件
因为BMP需要在开头写一些header数据 总计54字节
如下图
这里写图片描述

BMP header都是些什么呢
以windows平台为例 用途如下
这里写图片描述

我开始明白raiky的第二个函数在干嘛了
很多代码都在生成这个header

接下来我们也要生成BMP Header
要怎么生成呢 难不成一个字接一个字节的自己写吗—NO
WINDOWS.INC已经定义了两个STRUCT
BITMAPFILEHEADER
BITMAPINFOHEADER
我们直接用这两个Struct来生成header
BMP header =BMP File Header+BMP Info Header
注意顺序file header 在前

先看下面全局变量,这里仅贴出了接下来用到的部分

    .data
SaveFileName db '11.bmp',0 ;必须要跟着0啊
ByteCountPerPixel dd 3;位图中每个像素所占字节数 
.data?
ImgWidth dd ?
ImgHeight dd ?
dwBMPSize dd ? ; 位图文件大小(不含文件头)
dwWritten dd ? ;写入文件字节数
FileHdr dd ? ;定义文件句柄
bmFileHdr BITMAPFILEHEADER <> ;位图属性结构
bmInfoHdr BITMAPINFOHEADER <> ;位图文件头结构

先生成BMP INFO HEADER

    ;-----start to fill BMP INFO HEADER------
    
win32汇编 屏幕截图保存BMP 学习笔记<第三篇>之odbg调试 我们来回顾下raiky code 根据帖子里的讨论错误的疑点在于 1. 对每个像素所占字节的估算可能有误 wBitCount;位图中每个像素所占字节数 简单的赋值4 2. 涉及到后面的调色板的处理 我本人不喜欢调色板 3. 位图内存分配大小的错误 接下来对每一行试着运行一番看看效果吧 你问我有没有玩过debug? 买过书没看算么? 书到用时方恨少 哦 想起来了以前玩VBA 调试过 阅读详情

相关推荐

win32汇编 屏幕截图保存BMP 学习笔记<第二篇>之东拼西凑

接下来开始动手 先看raiky的代码_GetCaptureBmp proc uses ebx esi edi LOCAL @hDc,@MemDc,@Data LOCAL @bi:BITMAPINFO invoke RtlZeroMemory,addr @bi,sizeof @bi mov ebx,sizeof BITMAPINFO mov @bi.bm

ppluer的专栏 1557

从源码构建emWin库:嵌入式GUI开发的尺寸控制与PC模拟器实战

在嵌入式系统开发中,GUI(图形用户界面)的实现是提升产品交互体验的关键环节。其核心原理在于通过图形库将像素数据渲染到显示设备上,这要求开发者对底层硬件和图形算法有深入理解。从技术价值看,一个高效、可裁剪的GUI库能显著降低资源占用,提升系统响应速度,这对于Flash和RAM资源受限的微控制器至关重要。在实际应用场景中,嵌入式GUI广泛用于工业HMI、智能家居面板、医疗设备显示屏等领域。本文聚焦于emWin这一业界广泛使用的嵌入式GUI解决方案,深入探讨如何通过源码编译实现极致的尺寸控制和深度定制化,并详细

weixin_30415113的博客 362

32位纯RGB图片数据添加BMP文件头程序

32位纯RGB图片数据添加BMP文件头,如果是24位位图数据的话把里面的4改成3,,32改成24即可。

在macOS上使用GitHub的超详细指南

GitHub:免费的远程仓库,可用来托管自己的开源项目。它利用了Git强大的克隆和分支功能,让我们参与别人的开源项目和让别人参与自己的开源项目变得简单高效。

Mars的博客 3391

SpringBoot集成SpringSecurity5和OAuth2 — 2、OAuth2客户端【SSO单点登录时作为客户端】

SpringBoot集成SpringSecurity5和OAuth2 — 2、OAuth2客户端【SSO单点登录时作为客户端】

Mr_XiMu的博客 3742

matlab电容式传感器仿真,差动电容式位移传感器的仿真研究

设计了一种差动电容式位移传感器,主要对传感器的数学模型及电容检测电路进行了仿真研究。其中检测电路设计主要包括正弦激励电路、转换桥路、信号放大电路、精密整流电路和滤波电路。最后利用Matlab/SimurFnk软件对所设计的系统进行仿真,并分析了传感器性能。仿真研究表明,传感器及其检测电路具有合理性,测量范围内具有很好的线性度。0|| I≯ lat on ii{差动容尊翩’亘研发注:湖南省教育厅资...

weixin_36323601的博客 1391

J-SCOPE实战:除了看波形,如何用它和JLink-RTT模式高效调试你的STM32变量?

本文详细介绍了如何利用J-SCOPE和JLink-RTT模式高效调试STM32变量,实现实时数据可视化。通过对比HSS和RTT模式的优劣,提供固件端配置、J-SCOPE设置及实战应用案例,帮助开发者快速掌握这一高效调试技术,特别适用于电机控制、传感器融合等需要实时监控的场景。

weixin_29159613的博客 446

稳定性仿真(stb闭环增益仿真)

stb仿真主要是测试电路的稳定性,例如运放在闭环电路中的增益和相位裕度的值,从而判别电路是否正常工作。 以下是stb仿真的过程: (1)调用iprobe器件 从analogLib中调iprobe器件,通过器件中的箭头标识确定接入电路的方法,箭头起点端连运放的输出端,箭头的终点端连在反馈环路的作用端。iprobe器件连入电路后相当于理想导线。(iprobe器件连接在反馈回路上) (2)analyses设置 勾选stb和frequency,此处的频率范围设置在0.1~1GHz,Probe Instance/T

qq_36686804的博客 3万+

利用Virtuoso IC 618进行LDO稳定性分析与补偿设计

本文详细介绍了如何利用Virtuoso IC 618进行LDO稳定性分析与补偿设计。通过搭建仿真环境、运行STB分析诊断环路问题,并深入探讨密勒补偿、调零电阻等关键技术,帮助工程师在Virtuoso平台中高效完成LDO的稳定性优化与验证,确保芯片在各种工艺角下的鲁棒性。

weixin_29170327的博客 162

学Simulink--基础储能管理场景实例:基于Simulink的储能SOC均衡控制策略仿真

本文完成了基于 Simulink 的储能 SOC 均衡控制策略仿真,实现了:✅掌握并联系统 SOC 分化机理✅构建基于电流重分配的主动均衡架构✅验证均衡对系统可用容量的显著提升✅实现 SOC 偏差 < 2% 的高精度控制。

amy_mhd的博客 85

2024届数字IC秋招-华为机试-数字芯片-笔试真题和答案(五)(含2022年和2023年)

此部分包含华为机试真题,方向是数字芯片,内容详细包括设计、验证、后端等,大部分题目给出参考答案。华为机试都是从题库里抽题目,所以这些题目还是很有参考性的,甚至是完全一样,可以搜到的。(题目内容较多,将分开编写几个文章)

qq_42135020的博客 2083

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: win32汇编 屏幕截图保存BMP 学习笔记<第三篇>之odbg调试
下一篇: print in terminal with colors:
皮皮鲁o_O
博客等级 码龄20年 3粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值