ExifInterface不会更新exif标记

时间:2011-03-03 21:29:54

标签: android image exif

我正在尝试使用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"

4 个答案:

答案 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())));