我正在尝试使用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"
答案 0 :(得分:8)
以防有人正在寻找纯粹的Android解决方案:原始代码是正确的,但TAG_ORIENTATION
属性的值必须是1到8之间的值,如this page中所述。
您必须通过调用readAttribute()
方法来抑制该行,ExifInterface类中不存在此方法。如果要在修改之前和之后读取值,请将其替换为exifInterface.getAttribute(ExifInterface.TAG_ORIENTATION, defaultValue)
。
答案 1 :(得分:4)
另外,请确保您的应用具有WRITE_EXTERNAL_STORAGE权限
答案 2 :(得分:0)
您应该使用类似
的内容exifInterface.setAttribute(TAG_ORIENTATION, ""+ExifInterface.ORIENTATION_ROTATE_90);
代替
答案 3 :(得分:0)
试试这个:
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory())));