Bitmap 位图文件 编码/解码 --C语言实现
博客专区 > tigerBin 的博客 > 博客详情
Bitmap 位图文件 编码/解码 --C语言实现
tigerBin 发表于5个月前
Bitmap 位图文件 编码/解码 --C语言实现
  • 发表于 5个月前
  • 阅读 45
  • 收藏 0
  • 点赞 0
  • 评论 0

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

标签: Bitmap C/C++
共有 人打赏支持
粉丝 0
博文 44
码字总数 14259
×
tigerBin
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: