У меня есть изображение в галерее, которое было взято с камеры
Разработчик не может гарантировать, что какое-либо конкретное изображение получено из приложения камеры, если только разработчик не является автором этого приложения камеры.
Я пытаюсь выяснить, является ли изображение портретным или пейзажным
Для изображения не требуется портрет или пейзаж. Например, приложение камеры может обрезать фотографии, чтобы они были круглыми или квадратными.
У меня есть путь, полученный из кода ниже
Этот код не будет работать для многих значений Uri
на многих устройствах. Если вы хотите использовать ExifInterface
для Uri
, используйте getContentResolver().openInputStream()
, чтобы получить InputStream
для содержимого, идентифицируемого Uri
, затем передайте этот InputStream
в этот ExifInterface
конструктор .
Я всегда получаю ориентацию как ExifInterface.ORIENTATION_UNDEFINED
Изображения не обязательно должны иметь заголовки EXIF, не говоря уже о ExifInterface.TAG_ORIENTATION
.
Если этот тег не существует, вы можете проверить ширину и высоту изображения и сделать предположение:
- Если ширина больше высоты, это может быть пейзаж
- Если высота больше ширины, это может быть портрет
Это не удастся для квадратных изображений и не удастся для обрезанных изображений (например, фотография была сделана портретной, но пользователь обрезал ее так, что ширина теперь больше высоты).
Лучшее решение - изменить приложение, чтобы ему было все равно, портретное или альбомное изображение. Следующее лучшее решение - спросить пользователя, как он хочет обработать изображение, где, возможно, вы используете вышеупомянутый алгоритм для установки опции по умолчанию.