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