我正在尝试使用ExifInterface更改exif标签。我使用setAttribute()并调用saveAttributes()。标记被临时保存,然后下一次旧值仍然存在并且尚未更新......。

例子:

ExifInterface exifInterface = new ExifInterface(filePath);

String o1 = exifInterface.readAttribute(TAG_ORIENTATION); //o1 is "0"

exifInterface.setAttribute(TAG_ORIENTATION, "90");
exifInterface.saveAttributes();

String o2 = exifInterface.readAttribute(TAG_ORIENTATION); //o2 is "90"

// relaunch app, read attribute for same photo

String o3 = exifInterface.readAttribute(TAG_ORIENTATION); //o3 is "0" again, sould be "90"

最佳答案

万一有人在寻找纯粹的android解决方案:原始代码是正确的,但是TAG_ORIENTATION属性的值必须是1到8之间的值,如this page中所述。

您必须使用对readAttribute()方法的调用来禁止该行,该方法在ExifInterface类中不存在。如果要在修改前后读取值,请用exifInterface.getAttribute(ExifInterface.TAG_ORIENTATION, defaultValue)替换。

10-06 13:57