我想寫一些代碼來從JPG中提取Exif信息。JPG段長度編碼
Exif存儲在JPG文件的APP1段中。據the Exif spec,將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內部,那麼該長度似乎更合理。任何人都可以確認/否認這一點?
你確定APP1段不是63432字節?你怎麼知道它是686?它可能是686加上縮略圖的大小。 – Gabe 2010-04-02 00:56:20
@gabe我查找了一個新段的下一個FF xx標記字節。那是對的嗎? – Blorgbeard 2010-04-02 01:02:22
是的,我期望FFDB成爲下一個標記(DQT)。 – Gabe 2010-04-02 01:07:31