ExifInterface не обновляет теги exif
Я пытаюсь изменить теги exif с помощью ExifInterface. Я использую 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"
Ответы
Ответ 1
На всякий случай кто-то ищет чистое решение для Android: исходный код верен, но значение атрибута TAG_ORIENTATION
должно быть значением от 1 до 8, как описано в эта страница.
Вы должны подавить строку с вызовом метода readAttribute()
, этот метод не существует в классе ExifInterface. Замените его exifInterface.getAttribute(ExifInterface.TAG_ORIENTATION, defaultValue)
, если вы хотите прочитать значение до и после изменения.
Ответ 2
Также убедитесь, что ваше приложение имеет разрешение WRITE_EXTERNAL_STORAGE
Ответ 3
Вы должны использовать что-то вроде
exifInterface.setAttribute(TAG_ORIENTATION, ""+ExifInterface.ORIENTATION_ROTATE_90);
вместо
Ответ 4
Попробуйте следующее:
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory())));