Android получить Exif информационный вопрос
Чтобы получить Exif информацию об изображении, я написал несколько кодов, как показано ниже:
ExifInterface exif = new ExifInterface(path);
String aaa= (exif.getAttribute(ExifInterface.TAG_DATETIME));
Я также добавляю права на чтение и запись в AndroidManifest.xml
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
Теперь проблема для какой-то определенной папки, такой как /storage/emultaed/0/Pictures,/storage/emultaed/0/Download, возвращаемые значения exif.getAttribute(...) равны нулю.
Мне интересно, есть ли сторонние библиотеки, которые могут решить эту проблему? Спасибо за помощь.
2 ответа
Некоторые картинки работают нормально, поэтому проблема заключалась в данных, а не в вашем коде. Я подозреваю, что некоторые устройства / приложения кодируют свои exif-данные нестандартным способом, который ExifInterface не может проанализировать. Вы можете использовать exiftool для выгрузки EXIF, а также для его модификации и стандартизации.
На самом деле в Exif есть несколько возможных значений даты и времени. Не все изображения также содержат время экспозиции.
Я поддерживаю Java metadata-extractor
библиотека, которая имеет отличную поддержку Exif и других типов метаданных, а также простой API. Если exiftool находит дату-время в ваших файлах изображений, то metadata-extractor
даст вам доступ к нему.
Посмотрите на GitHub. Он также доступен через Maven.