Source Code : https://git.oschina.net/SilentCode/BitmapCoDecoders
仅以 24为真彩色Window Bitmap 文件格式为参考,不支持 OS/2格式的位图文件
大部分24位图文件包含54个字节的文件头信息,且大部分字段相同,不同的地方只有 三个字段共12个字节
offset 从文件头开始的偏移量,hex(十六进制), dec(十进制)
Offset hex | Offset dec | Size(字段长度) | Purpose(用途) |
0x02 | 2 | 4 bytes | 文件的总字节数 |
0x12 | 18 | 4 bytes | 图像的宽度(Width) |
0x16 | 22 | 4 bytes | 图像的高度(Height) |
Bitmap文件采用小端字节序的方式存储头部信息,也就是说,如果读取到的宽度是 00 00 01 00 四个连续的字节,那么实际的宽带是 00 01 00 00 = 0x00010000
数据部分按照从左到右,从下到上的顺序排列,详情请参考:
https://my.oschina.net/tigerBin/blog/919744
https://en.wikipedia.org/wiki/BMP_file_format
BmpDecoder.h 位图文件解码部分
直接调用OpenImage打开文件,读取位图数据,返回结果是按照 BGR的顺序存放的
BmpEncoder.h 文图文件编码部分
直接调用Encoder将 BGR顺序的位图数据编码为Bitmap格式的数据流
调用Write函数保存文件数据
main.cpp 运行示例
g++ main.cpp -o main
main demo.bmp out.bmp
demo.bmp
out.bmp