В настоящее время я использую обратный вызов 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 без поворота. вращение-градусы описывает величину поворота по часовой стрелке, которая применительно к изображению приведет к тому, что оно будет соответствовать текущему настроенному целевому вращению.
, что заставляет меня думать, что я получаю растровое изображение неправильно, потому что иногда оно имеет вращение применяется. Я что-то упускаю здесь?