BMP文件中奇怪的十六进制数字

时间:2013-08-15 04:05:53

标签: binary pixels bmp terminator

我在BMP GRAPHICS文件中有一个奇怪的东西。

我使用FULLSHOT 9(屏幕截图软件)创建它们(只需鼠标点击+在屏幕上拖动一个矩形并保存为.bmp文件)。

当我在二进制编辑器中观看文件时,我可以看到一个像素正在按预期使用了一段时间。

所以你看到这样的事情:

(编辑器每行显示8个十六进制数字)(像素= 3个十六进制数字,如“ED ED ED”)

0x00002f0< ----文件开头的一些偏移(bmp文件的长标题部分,之后我只期望一长串像素,而不是一些额外的信息)

ED  ED  ED  ED  ED  ED  ED  ED
ED  ED  ED  ED  ED  ED  ED  ED
ED  ED  ED  ED  ED  ED  ED  ED
ED  ED  ED  ED  ED  ED  ED  ED

然后突然间你会看到一个常规块(比如像素= 3个十六进制数)但不重复数字

EF  EF  EF
F0  F0  F0
F2  F2  F2
F3  F3  F3
F5  F5  F5
F7  F7  F7
F8  F8  F8
FA  FA  FA
FB  FB  FB
FD  FD  FD

(为了清楚起见,我在每组3之后制作换行符...... 二进制编辑器连续显示8个十六进制数字

我怀疑这些不是实际的像素,而是一些“信息” 然后经常你会看到一个怪异的0。

00  <----i suspect a terminator of some sort.

然后“信息”部分继续......

but now (most of the time) in reverse order
FD  FD  FD
FB  FB  FB
FA  FA  FA ..etc

然后停下来,再加上一个新的looooong重复像素。

DC  DC  DC  DC  DC  DC  DC  DC  
DC  DC  DC  DC  DC  DC  DC  DC  
DC  DC  DC  DC  DC  DC  DC  DC  
DC  DC  DC  DC  DC  DC  DC  DC  
DC  DC  DC  DC  DC  DC  DC  DC  

问题: 这些“信息”块阻止我收集所有实际像素。 如果我知道它们是什么,我可以告诉程序跳过它们。

问题1: 这个“信息”部分的含义是什么?

问题2: 零真的是终结者吗?

PS 我已经测量了重复发生的零点之间的差异,它通常是我创建和检查的不同.bmp文件中“with the bitmap”的倍数。

1 个答案:

答案 0 :(得分:0)

您需要的所有信息均位于Wikipedia on the BMP Format

  

0x00002f0&lt; ----文件开头的一些偏移(bmp文件的长标题部分,之后我只期望一长串像素,而不是一些额外的信息)

您没有提到您在哪个位置找到此值,但这可能是原始像素数据的开头:

  

位图文件标题

     

...

     

000Ah 4字节是可以找到位图图像数据(像素阵列)的字节的偏移量,即起始地址。

Q1。从它的外观来看,“信息”只是一个调色板。真正的颜色位图包含显式调色板不是 required ,但是可能有一个。从理论上讲,这将是针对同一图像的优化8位调色板,但我不会指望它。您显示的部分是一个简单的灰色列表。

Q2。这些零可能是DWORD行填充。它们出现在“位图宽度的倍数”处,因为图像中的每个线实际上占据了“位图宽度的倍数”字节 - RGB为3倍,RGBA为4倍。仅在行尾,插入零以确保 next 行在DWORD边界处开始。