2

我正在解析 Jpeg/JFIF 文件,我注意到在 SOI (0xFF D8) 之后,我解析了以 0xFFXX(其中 XX 是十六进制数)开头的不同“流”,直到找到 EOI (0XFFD9)。现在不同块的结构是:

APP0 marker     2 Bytes   
Length          2 Bytes

现在,当我解析一个块时,我会解析直到达到长度字段的 2 字节中写入的长度。在那之后,我想我会立即找到另一个标记,然后是下一个块的长度。根据我的解析器并非总是如此,块之间可能存在数据。我无法找出该数据是什么,以及它是否与图像相关。您是否有任何提示这可能是什么以及如何解释这些字节?

我迷路了,如果有人能指出我正确的方向,我会很高兴。提前致谢

4

1 回答 1

1

我最近也注意到了这一点。在我的情况下,它是一个 APP2 块,它是不包含块长度的 ICC 配置文件。

事实上,据我所知,块的长度不必是前 2 个字节(尽管通常是)。

在 JFIF 中,数据部分中的所有 0xFF 字节都替换为 0xFF 0x00,因此只需计算长度即可。我只是读到另一个标题,但是我注意到有时(再次在 ICC 配置文件中)有些字节序列没有意义,例如 0xFF 0x6D,所以我可能仍然遗漏了一些东西。

于 2013-01-21T13:52:25.517 回答