位图文件的哪一部分是元数据?

时间:2013-06-13 19:58:59

标签: image image-processing

我一直在修改位图文件,而且我得到了一些非常奇怪的结果。我想我可能会意外地改变部分元数据。哪个部分是元数据,所以我知道将其从我正在进行的二进制操作中删除?

我正在寻找一个答案,告诉我哪些字节是元数据的一部分,无论它们是在文件的开头还是结尾。元数据是指任何不属于像素的东西。

3 个答案:

答案 0 :(得分:7)

简单细分

Windows Bitmap文件有两种:

  • DDB - 设备相关位图(位图版本1)
  • DIB - 设备无关位图(位图版本2-5)

DDB

DDB文件有两个部分:

  • 页眉/元数据
  • 像素数据

通过以下方式检测DDB文件和偏移:

  • 第一个 WORD = 0x0000
  • 像素数据的偏移量始终为= 10

DIB

DIB文件有三个部分:

  • 页眉/元数据
  • 数据
  • 颜色配置文件(仅限第5版)

标题/元数据有三个部分

  • DIB文件信息
  • DIB图片信息
  • 颜色表

通过以下方式检测DIB文件和偏移:

  • 第一个 WORD = 0x4D42
  • 像素数据的偏移量存储在 DWORD 中,字节 10
  • DIB版本基于 DWORD 中标题大小的字节 14
    • 版本2 = 12
    • 版本3 = 40
    • 版本4 = 108
    • 版本5 = 124
  • 如果DIB是版本5,请检查字节 116 处的DWORD以获取颜色配置文件的像素数据/偏移的结束。

参考

答案 1 :(得分:5)

.bmp文件的字节10到13包含一个4字节的整数,它是像素数据开头的偏移量。文件中偏移量之前的所有内容都是元数据,该偏移量之后或之后的所有内容都是像素数据或未使用的填充。

答案 2 :(得分:1)

This似乎有您正在寻找的信息。