我正在尝试编写一些代码来从JPG中提取Exif信息。
Exif存储在JPG文件的APP1段中。根据{{3}},APP1段的格式应该是这样开始的:
FF E1 // APP1 segment marker
nn nn // Length of segment
45 // 'E'
78 // 'x'
69 // 'i'
66 // 'f'
直到有FF
后跟FF
或00
以外的其他内容。
在十六进制编辑器中查看JPG,我可以看到FF E1
和Exif
字符串,但我在解码长度字节时遇到问题。一个例子:在一个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内部,则该长度似乎更合理。任何人都可以确认/否认这个吗?
答案 0 :(得分:3)
事实证明,APP1段包含缩略图(请参阅链接的EXIF文档并向下滚动到逻辑页12),因此686是红色鲱鱼(可能是缩略图之前的字节数)。 F7C8是DQT段之前的实际字节数,它是如此之大,因为它包含一个缩略图。
答案 1 :(得分:1)
你做不到。这些字节不代表686,但长度字节确实在“Exif”字符串之前。
没有看到文件,就无法诊断。发布文件的前20个十六进制字节可能会很好。