4

我正在尝试编写一些代码来从 JPG 中提取 Exif 信息。

Exif 存储在 JPG 文件的 APP1 段中。根据Exif 规范,APP1 段的格式应该是这样开始的:

FF E1        // APP1 segment marker
nn nn        // Length of segment
45           // 'E'
78           // 'x'
69           // 'i'
66           // 'f'

它一直持续到后面跟着orFF以外的东西。FF00

在十六进制编辑器中查看 JPG,我可以看到字符串FF E1Exif但我无法解码长度字节。一个例子:在一个 jpg 中,我的十六进制编辑器告诉我 APP1 段的长度为 686 字节,但长度字节为F7 C8.

我应该如何使用这些字节来得出十进制 686?

编辑:这是示例文件的第一部分:

FF D8 FF E1 F7 C8 45 78 69 66 00 00 4D 4D 00 2A 00 00 00 08

编辑:实际上,我想我可能知道这里发生了什么。APP1 段是否真的“包含”其他段?例如,如果缩略图数据被认为在 APP1 内部,那么该长度似乎更合理。任何人都可以确认/否认这一点吗?

4

2 回答 2

3

事实证明,APP1 段包含缩略图(请参阅链接的 EXIF 文档并向下滚动到逻辑页面 12),因此 686 是一条红鲱鱼(可能是缩略图之前的字节数)。F7C8 是直到 DQT 段的实际字节数,它很大,因为它包含一个缩略图。

于 2010-04-02T11:49:20.870 回答
1

你不能。这些字节不代表 686,但长度字节确实在“Exif”字符串之前。

没有看到文件,就无法诊断。最好发布文件的前 20 个十六进制字节。

于 2010-04-02T00:30:46.707 回答