到目前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------