joa*_*imk 5 android exif android-imageview
我已经设法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"
Run Code Online (Sandbox Code Playgroud)
现在,EXIF 已保存到 JPEG 文件中:请参阅我的应用程序的屏幕截图。这也得到了照片编辑器应用程序的验证:见截图。
但是,如果我注释掉 set+save 并且只是获取(在与上面相同的图像上),我的应用程序将无法获取/查看该属性:
ExifInterface exif = new ExifInterface(path_to_image);
String x = exif.getAttribute("UserComment"); // x = null (although we know it isn't)
Run Code Online (Sandbox Code Playgroud)
所以:由于照片编辑器应用程序可以读取数据,我做错了(写入/保存)。此外,如果我在同一个图像文件上重新运行 set+save,我的应用程序会复制相同的标签!除了简单的设置+保存,然后获取之外,还有更多的东西吗?
更新:问题似乎与设备有关。尽管
UserComment似乎不在 ExifInterface 明确支持的标签中,但某些设备仍然能够设置和获取标签中的值。它适用于 Nexus'es,但不适用于我的 Sony Xperia。请查看我在内容提供者上的其他帖子中获取(查询)和设置(更新)UserComment标签的代码。
解决方案似乎是不使用 ExifInterface。我要尝试https://github.com/sephiroth74/Android-Exif-Extended
更新:更好的是,使用 Apache Sanselan,https://commons.apache.org/proper/commons-imaging/javadocs/api-release/org/apache/sanselan/Sanselan.html
| 归档时间: |
|
| 查看次数: |
7376 次 |
| 最近记录: |