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

这篇博客详细介绍了如何在Win32汇编中生成BMP文件,包括理解BMP头文件结构、使用BITMAPFILEHEADER和BITMAPINFOHEADER结构体生成头文件,以及处理不同分辨率下的数据对齐问题。作者通过解决各种错误,如文件名处理、内存操作等,最终成功实现了屏幕截图并保存为BMP文件。
摘要由CSDN通过智能技术生成

到目前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 ;必须要跟着0ByteCountPerPixel 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------
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值