目前我正在尝试将自定义 exif 标签/数据添加到相册中的图像文件。
我能够修改ExifInterface
类中定义的现有标签
但是,我想存储自定义数据,例如我的应用用户的用户 ID,但似乎我无法创建自定义 exif 属性
我找到的最接近的解决方案是here,但不起作用,
目前我正在尝试将自定义 exif 标签/数据添加到相册中的图像文件。
我能够修改ExifInterface
类中定义的现有标签
但是,我想存储自定义数据,例如我的应用用户的用户 ID,但似乎我无法创建自定义 exif 属性
我找到的最接近的解决方案是here,但不起作用,
尝试使用标签保存 Exif 数据:
“用户评论”
代码:
String mString = "Your message here";
ExifInterface exif = new ExifInterface(path_of_your_jpeg_file);
exif.setAttribute("UserComment", mString);
exif.saveAttributes();
你可以把你想要的任何东西(作为字符串)放在那里,然后简单地解析字符串。我希望我们可以创建和命名我们自己的 exif 标签,但事实是我们做不到。所以这是我想出的最好的解决方案。
使用标签保存 Exif 数据"ImageDescription"
https://developer.android.com/reference/android/media/ExifInterface.html
代码
try {
String imageDescription = "Your image description";
ExifInterface exif = new ExifInterface(file_name_of_jpeg);
exif.setAttribute("ImageDescription", imageDescription);
exif.saveAttributes();
} catch (IOException e) {
// handle the error
}
如果您不能使用现有的 exif 属性(例如“UserComment”或“ImageDescription”),那么您在使用ExifInterface
.
Exif 属性表示为二进制标记号,其值以二进制数据格式编码。 ExifInterface
类从程序员那里抽象出来,并提供了一个setAttribute
方法,其中标签和值作为字符串提供。在幕后,它在字符串形式和相应的二进制属性表示之间进行映射。
问题是ExifInterface
该类只知道如何映射一组固定的属性。此外,API 不提供将新的(例如自定义)exif 属性的描述符添加到其映射表的方法。
如果你真的很绝望,替代方案是:
ExifInterface
的内部 ( private
) 映射表添加额外的映射。如果您尝试这样做,您将需要处理这样一个事实,即ExifInterface
' 的实现随着时间的推移发生了根本性的变化。(在一些旧版本中,属性的编码和解码是在本机代码库中实现的!)