Данные 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 для каждого изображения. У кого-нибудь есть идеи о том, как правильно получить ориентацию фотографии на андроид?
Ответы
Ответ 1
Мое решение:
Удалите любую проверку ориентации из exif-данных. Я не мог найти один экземпляр, где он был точным.
Используйте стандартную String[] orientationColumn = {MediaStore.Images.Media.ORIENTATION};
, чтобы получить ориентацию.
Если это 0
, используйте
decodeStream...
if(o.outHeight > o.outWidth){
//set orientation to portrait
}
иначе это пейзаж
Ответ 2
Вот код, который я использовал 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);
Ответ 3
Я обнаружил ошибку, связанную с другой ошибкой Android. Я нашел разумное решение, размещенное здесь fooobar.com/info/22047/...