Android为图像文件创建自定义Exif属性
目前,我正在尝试将自定义exif标记/数据添加到相册中的图像文件中 我能够修改类中定义的现有标记 但是,我想存储自定义数据,例如我的应用程序用户的用户id,但似乎无法创建自定义exif属性Android为图像文件创建自定义Exif属性,android,jpeg,exif,Android,Jpeg,Exif,目前,我正在尝试将自定义exif标记/数据添加到相册中的图像文件中 我能够修改类中定义的现有标记 但是,我想存储自定义数据,例如我的应用程序用户的用户id,但似乎无法创建自定义exif属性 我找到的最接近的解决方案是,但不起作用,尝试用标记保存Exif数据: “用户评论” 代码: 您可以将任何您想要的东西(作为字符串)放入其中,然后简单地解析字符串。我希望我们能够创建并命名我们自己的exif标签,但现实是我们不能。因此,这是我提出的最佳解决方案。使用标签“ImageDescription” 代
我找到的最接近的解决方案是,但不起作用,尝试用标记保存Exif数据: “用户评论” 代码:
您可以将任何您想要的东西(作为字符串)放入其中,然后简单地解析字符串。我希望我们能够创建并命名我们自己的exif标签,但现实是我们不能。因此,这是我提出的最佳解决方案。使用标签
“ImageDescription”
代码
如果无法使用现有的exif属性(如“UserComment”或“ImageDescription”),那么使用
ExifInterface
就太不走运了
Exif属性表示为二进制标记号,其值以二进制数据格式编码ExiFinInterface
类将其从程序员那里抽象出来,并提供了一个setAttribute
方法,其中标记和值作为字符串提供。在幕后,它在字符串形式和相应的二进制属性表示之间映射
问题是,ExifInterface
类只知道如何映射一组固定的属性。此外,API没有提供将新(例如自定义)exif属性的描述符添加到其映射表中的方法
如果你真的很绝望,那么其他选择是:
- 寻找一个与Android兼容的替代库
- 使用反射来添加额外的映射到
的内部(ExifInterface
)映射表。如果您尝试这样做,您将需要处理这样一个事实:private
的实现随着时间的推移发生了根本性的变化。(在一些旧版本中,属性的编码和解码是在本机代码库中实现的!)ExifInterface
String mString = "Your message here";
ExifInterface exif = new ExifInterface(path_of_your_jpeg_file);
exif.setAttribute("UserComment", mString);
exif.saveAttributes();
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
}