2013-07-12 50 views
0

在Android中,似乎有两种不同的方式来读取图像的元数据。我知道该图像的EXIF上有时间戳,方向,gps标签等数据,但显然,根据Android的文档,您可以通过MediaStore获取相同的信息: developer.android.com/reference/android/provider/MediaStore .Images.ImageColumns.html图像元数据MediaStore与EXIF

两者有什么区别?可以安全地假设两者的数据总是一样吗?

回答

3

两者有什么区别?

MediaStore信息包含某些EXIF数据的缓存副本以及其他元数据。

可以安全地假设来自两者的数据总是相同吗?

如果MediaStore是最新的,然后是。但是,图像是文件。文件可以更改。如果MediaStore将图像文件编入状态A,则会将图像文件修改为状态B,除非导致MediaStore更新其缓存,否则它们将不同步。

+0

谢谢,所以EXIF将包含最准确的元数据,对不对? – baekacaek

+1

@baekacaek:这取决于你对“准确”的定义。 EXIF元数据都不一定是“准确的”。例如,我可以将照片的地理标签从Mt.的顶部取走。珠穆朗玛峰,实际上是从我的庭院(不远处喜马拉雅山附近)。比较'MediaStore'和EXIF,EXIF可能会更新。 OTOH,查询“MediaStore”比自己执行文件系统扫描和读取所有EXIF数据要实用得多。所以这一切都取决于你的用例。 – CommonsWare

+0

因此,编写一个图库应用程序,只会读取MediaStore足够的定位,时间戳和gps标签?或者是否会出现MediaStore上的图像元数据为空的情况,因为它之前没有被缓存? – baekacaek