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.

https://github.com/drewnoakes/metadata-extractor

Другие вопросы по тегам