在EXIF数据中搜索结束标记

时间:2013-12-02 22:30:14

标签: java exif

所以我在这里看EXIF文档。 (http://www.media.mit.edu/pia/Research/deepview/exif.html
我需要手动执行此操作,因此我尝试将所有EXIF数据存储到字节数组中,稍后我可以使用它。 根据链接,EXIF数据的结束标记为FFD9。 在遇到FFD9之前,可以直接读取EXIF数据,并将所有EXIF数据保存起来供以后使用吗?或者这是一个问题,FFD9可能会出现在大量元数据信息中的其他地方,同时遍历它?

1 个答案:

答案 0 :(得分:3)

FFD8FFD9是JPEG图像(或EXIF缩略图)的开头和结尾,而不是EXIF块。 JPEG中的EXIF数据存储在由FFE1制造商标记的块中,没有结束标记。您必须读取接下来的2个字节才能获得EXIF数据长度并读取尽可能多的数据。

例如,ffe1 1b61 4578 6966,其中1b61是EXIF数据块中的字节数。 7009字节,一旦你读完这些,你就可以停下来。这是唯一正确的方法。

您可以使用一些提示来检查您是否在正确的路径上(阅读中没有1个错误)。由于EXIF缩略图是JPEG,因此它们也会以FFD9结尾,而缩略图条目很可能是EXIF块中的最后一个条目。所以EXIF块很可能以FFD9结尾。接下来是一个新的FFEx标记,这是一个完全不同的块的开始。

再次:不要搜索FFD9并停止,因为EXIF块可能包含以FFD9结尾的多个缩略图,获取标题大小并相应地读取。

这是JPEG。在其他图像格式中,EXIF将以不同方式存储。