Intereting Posts
(Android) с несколькими кнопками, элемент списка не может быть нажат Написание сценария Gradle для запуска модульных тестовых примеров для проекта Eclipse Android Test ClassCastException: RestTemplate возвращает List <LinkedHashMap> вместо списка <MymodelClass> Как использовать один источник библиотеки для нескольких проектов Сводная область тега PreferenceCategory Что такое ошибка INSTALL_PARSE_FAILED_NO_CERTIFICATES? Нет кэшированной версии com.android.tools.build:gradle:0.9.1 для автономного режима Android: Каковы рекомендуемые конфигурации Proguard? Android: как выровнять изображение в горизонтальном центре изображения? Как я могу назначить идентификатор для представления программно? Остановить прослушиватель после первого обновления Значок меню ящика навигации отображается неправильно API местоположений Google: запрашивать обновления местоположения с ожидающим намерения? Mkdirs возвращает false для каталога на SD-карте, в то время как родительский каталог доступен для записи Как запустить adb push как root?

Данные 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