Как узнать, вращается ли изображение в буфере? - PullRequest
1 голос
/ 31 марта 2020

В настоящее время я использую обратный вызов OnImageCaptured для получения своего изображения вместо сохранения его на устройстве. У меня проблемы с пониманием, когда необходимо повернуть изображение, когда оно исходит от ImageProxy.

Я использую следующий метод для преобразования данных из ImageProxy в BitMap:

...
val buffer: ByteBuffer = imageProxy.planes[0].buffer // Only first plane because of JPEG format.
val bytes = ByteArray(buffer.remaining())
buffer.get(bytes)
return BitmapFactory.decodeByteArray(bytes, 0, bytes.size)

Полученное растровое изображение иногда поворачивается, а иногда нет, в зависимости от устройства фотография взята с. ImageProxy.getImageInfo().getRotationDegrees() возвращает правильное вращение, но я не знаю, когда это необходимо применить, поскольку иногда оно применяется в растровом изображении, а иногда нет.

Документация ImageCapture.OnCapturedImageListener также говорится:

Изображение предоставляется в том виде, в котором оно было получено лежащим в основе ImageReader без поворота. вращение-градусы описывает величину поворота по часовой стрелке, которая применительно к изображению приведет к тому, что оно будет соответствовать текущему настроенному целевому вращению.

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

1 Ответ

0 голосов
/ 03 апреля 2020

Ну, как оказалось, единственной необходимой информацией являются метаданные Exif. rotationDegrees содержит окончательную ориентацию, в которой должно быть изображение, начиная с базовой ориентации, но метаданные Exif показывают только поворот, который я должен был сделать, чтобы получить окончательный результат. Так что вращение в соответствии с TAG_ORIENTATION решило проблему.

  • ОБНОВЛЕНИЕ: Это была проблема с самой библиотекой CameraX. Это было исправлено в 1.0.0-beta02, поэтому теперь метаданные exif и rotationDegrees содержат одинаковую информацию.
...