在安卓中编写并保存JPEG图片的EXIF标签(属性)

5
我已经成功使用ExifInterface从我的手机上读取JPEG文件的EXIF标签/属性(元数据),我还可以设置属性和保存属性。奇怪的是,如果我在图像文件上进行了设置+保存操作,我的应用程序就能够获取属性并显示它。我还可以在另一个应用程序(Google Play上的Photo Editor)中验证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文件中:查看我的应用程序的截图。这也得到了Photo Editor应用程序的验证:查看那个的截图
但是,如果我注释掉set+save并只对上述相同图像进行get操作,则我的应用程序无法获取/查看属性。
ExifInterface exif = new ExifInterface(path_to_image); 
String x = exif.getAttribute("UserComment");  // x = null (although we know it isn't)

所以:由于照片编辑器应用程序可以读取数据,我在写入/保存方面做错了什么。此外,如果我在同一图像文件上重新运行集合+保存操作,我的应用程序会复制相同的标记!这是否比简单的设置+保存,然后获取更多内容?
更新:似乎问题与设备有关。尽管ExifInterface明确支持的标记中没有“UserComment”,但某些设备仍然能够设置和获取标记中的值。它在Nexus上有效,但在我的Sony Xperia上无效。请查看我的代码以获取(查询)和设置(更新)“UserComment”标记在我发布的有关内容提供程序的其他帖子中

对源代码(Java和C)进行了一些研究,似乎这种行为不应该出现。您的完整源代码是什么样子的?在发布的位中,我已经缺少一个try catch块。 - Rolf ツ
2个回答

2

0

你的代码对我来说是有效的。我认为你可能有一些简单的错误,比如你混淆了你正在修改的文件和你在照片编辑器中查看的文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接