Intereting Posts
Как отключить предупреждение eclipse в производном файле IMarketBillingService.java? Настройка максимального уровня масштабирования в google maps android api v2 В чем разница между пакетами android.opengl и javax.microedition.khronos.opengles? Android BOOT_COMPLETED не получен, когда приложение закрыто Кордова App – ошибка инструмента сборки – Gradle Как протестировать корпоративное приложение Android на разных устройствах Выбор файла изображения из галереи с помощью FileProvider Отладка приложений Android для разжигания огня Android: рейтинг не отображается, становится видимым только при касании Выберите номер и имя из списка контактов в приложении Android В Android, можно ли использовать изображение из активов в макете xml? Перенаправить на appstore или google play Кодирование и мультиплексирование видео с использованием MediaCodec и MediaMuxer Как разрешить ошибку «Ресурс не найден, который соответствует указанному имени» при добавлении библиотеки v7 AppCompat в Eclipse? Использование спрайтов изображений на android

Данные Exif TAG_ORIENTATION всегда 0

Мне нужно знать ориентацию изображения из галереи (сделанной камерой). Мой первоначальный подход состоял в использовании MediaStore.Images.Media.ORIENTATION, который работал на моем Droid 1. При тестировании на HTC Thunderbolt этот телефон сохраняет только 0 в это поле.

Затем я перешел к чтению данных exif:

ExifInterface exifReader = new ExifInterface(mFilePath); exifReader.getAttributeInt(ExifInterface.TAG_ORIENTATION, -1); 

Это также возвращает 0 для каждого изображения. У кого-нибудь есть идеи о том, как правильно получить ориентацию фотографии на андроид?

Solutions Collecting From Web of "Данные Exif TAG_ORIENTATION всегда 0"

Вот код, который я использовал onActivityResult () в своей деятельности. Возвращаемое намерение состояло в том, чтобы выбрать изображение типа image / *. Хорошо работает для меня!

 Uri imageUri = intent.getData(); String[] orientationColumn = {MediaStore.Images.Media.ORIENTATION}; Cursor cur = managedQuery(imageUri, orientationColumn, null, null, null); int orientation = -1; if (cur != null && cur.moveToFirst()) { orientation = cur.getInt(cur.getColumnIndex(orientationColumn[0])); } Matrix matrix = new Matrix(); matrix.postRotate(orientation); 

Мое решение:

Удалите любую проверку ориентации из данных exif. Я не мог найти один экземпляр, где он был точным.

Используйте стандартную String[] orientationColumn = {MediaStore.Images.Media.ORIENTATION}; Чтобы получить ориентацию.

Если это 0 используйте decodeStream …

 if(o.outHeight > o.outWidth){ //set orientation to portrait } 

Иначе это пейзаж

Это ошибка, которую я обнаружил, что был связан с другой ошибкой Android. Я нашел разумное решение, размещенное здесь https://stackoverflow.com/a/8864367/137404