Android image exif reader сторонняя api

Есть ли какая-либо третья часть api для android, чтобы читать теги exif с изображения, которые поддерживают уровень api, начиная с 1.5.

Библиотека извлечения метаданных от Drew Noakes хорошо работает для извлечения тегов EXIF ​​на ранних версиях платформы Android с небольшой модификацией . Я использую его на Android 1.6 для извлечения тегов из изображений JPEG.

ПРИМЕЧАНИЕ. Более новые версии метаданных-экстракторов работают непосредственно на Android без изменений.

Вам нужно будет загрузить и построить исходный код самостоятельно, и упаковать его с вашим приложением. (Я использую версию 2.3.1.) Внесите следующие изменения в com.drew.imaging.jpeg.JpegMetadataReader :

  • Удалите следующий оператор импорта:

    import com.sun.image.codec.jpeg.JPEGDecodeParam;

  • Удалите следующий метод (который вам не понадобится на Android):

    public static Metadata readMetadata(JPEGDecodeParam decodeParam) { ... }

Удалите класс com.drew.metadata.SampleUsage , который ссылается на метод, удаленный выше. Также удалите все тестовые пакеты.

Вот и все. Вот пример использования JpegMetadataReader для извлечения тега даты с изображения JPEG, хранящегося на SD-карте:

 import com.drew.imaging.jpeg.JpegMetadataReader; import com.drew.metadata.Directory; import com.drew.metadata.Metadata; import com.drew.metadata.exif.ExifDirectory; // other imports and class definition removed for brevity public static Date extractExifDateTime(String imagePath) { Log.d("exif", "Attempting to extract EXIF date/time from image at " + imagePath); Date datetime = new Date(0); // or initialize to null, if you prefer try { Metadata metadata = JpegMetadataReader.readMetadata(new File(imagePath)); Directory exifDirectory = metadata.getDirectory(ExifDirectory.class); // these are listed in order of preference int[] datetimeTags = new int[] { ExifDirectory.TAG_DATETIME_ORIGINAL, ExifDirectory.TAG_DATETIME, ExifDirectory.TAG_DATETIME_DIGITIZED }; int datetimeTag = -1; for (int tag : datetimeTags) { if (exifDirectory.containsTag(tag)) { datetimeTag = tag; break; } } if (datetimeTag != -1) { Log.d("exif", "Using tag " + exifDirectory.getTagName(datetimeTag) + " for timestamp"); SimpleDateFormat exifDatetimeFormat = new SimpleDateFormat("yyyy:MM:dd HH:mm:ss"); datetime = exifDatetimeFormat.parse(exifDirectory.getString(datetimeTag)); } else { Log.d("exif", "No date/time tags were found"); } } catch (Exception e) { Log.w("exif", "Unable to extract EXIF metadata from image at " + imagePath, e); } return datetime; } 

Для чего это стоило, вы пытались использовать родной класс ExifInterface?

http://developer.android.com/reference/android/media/ExifInterface.html

Должно быть нужно быстрее, чем использовать стороннюю библиотеку;)

Intereting Posts
Как добавить DropDown в приложение для Android Продвинутый провайдер местоположения – onLocationChanged перестает получать вызов Android API 23. WebView как игнорировать ошибки JavaScript FindViewById для возврата массива Views Как мне переработать API-интерфейс kik-сервера от эмулятора Android? Что означает @Module в кинжале для Android? Как создать пользовательский дампикер? Android: будет активирован динамически зарегистрированный широковещательный приемник, если процесс приложения был убит Как импортировать закрытый ключ RSA, который генерируется openssl, в AndroidKeyStore Могу ли я использовать CloudKit для Android или веб-приложения Android mkdirs () не работает Лучший способ связывать фотографии с приложениями: файлами или в базе данных sqlite? Как создать линейную компоновку справа налево Покрытие кода Android не удается из-за исключения CNF для org.junit.Test Доступ к ресурсам в проекте тестирования Android