【发布时间】:2015-04-15 11:51:58
【问题描述】:
我已经设法使用ExifInterface 从我手机上的 JPEG 中读取 EXIF 标签/属性(元数据),而且我显然也可以设置属性和保存强>属性。奇怪的是,如果我在图像文件上设置+保存,我的应用程序能够获取属性并显示它。我还可以在另一个应用程序(Google Play 上的照片编辑器)中验证 EXIF 数据确实已写入。
ExifInterface exif = new ExifInterface(path_to_image);
String x = exif.getAttribute("UserComment"); // here, x is always null...
exif.setAttribute("UserComment", "testtest");
exif.saveAttributes();
x = exif.getAttribute("UserComment"); // x = "testtest"
现在,EXIF 被保存为 JPEG 文件:see screenshot of my app。 这也由照片编辑器应用程序验证:see screenshot of that。
但是,如果我注释掉 set+save 并且只是获取(在与上面相同的图像上),我的应用程序无法获取/查看属性:
ExifInterface exif = new ExifInterface(path_to_image);
String x = exif.getAttribute("UserComment"); // x = null (although we know it isn't)
所以:由于照片编辑器应用程序可以读取数据,我做错了(写入/保存)。此外,如果我在同一个图像文件上重新运行 set+save,我的应用程序会复制相同的标签!除了简单地设置+保存,然后获取之外,还有什么其他的吗?
更新:问题似乎与设备有关。尽管
UserComment似乎不在 ExifInterface 明确支持的标签中,但某些设备仍然能够设置和获取标签中的值。它适用于 Nexus'es,但不适用于我的 Sony Xperia。请查看我的代码以获取(查询)和设置(更新)UserComment标签in my other post on Content Providers.
【问题讨论】:
-
对源代码(java和c)做了一些研究,似乎这种行为是不可能的。您的完整源代码是什么样的?我已经在发布的位中丢失了一个 try catch 块。
标签: android android-imageview exif