В Android Camera2 API.Могу ли я использовать считыватель изображений (YUV_420_888) для обработки и другой (JPEG) для захвата неподвижного изображения? - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь, но предварительный просмотр останавливается, когда я нажимаю кнопку захвата и изображение не создаетсяЛюбое предложение ?Сколько считывателей изображений я могу использовать в одном проекте Camera2?

1 Ответ

0 голосов
/ 21 февраля 2019

Для каждой создаваемой CaptureSession у вас может быть только один ImageReader.Если вы хотите использовать два разных ImageReader для каждого типа изображений, то вам следует использовать два CaptureSession.Но вы должны быть очень осторожны с обработкой ресурсов камеры между двумя Сессиями (например, вы должны закрыть ImageReader for JPEG перед запуском другой CaptureSession для захвата изображения YUV_420_888).Использование нескольких CaptureSession также тяжело на устройстве и, как правило, не рекомендуется.Вместо этого вы можете использовать одни и те же байты для обоих типов изображений.

public void onImageAvailable(ImageReader imageReader) {
            byte[] bytes = null;
            Image image = imageReader.acquireLatestImage();
            try {

                ByteBuffer buffer = image.getPlanes()[0].getBuffer();
                bytes = new byte[buffer.capacity()];
                buffer.get(bytes);
                //use the bytes to manipulate
            } catch (Exception e) {
                e.printStackTrace();
            }
            image.close();
            imageReader.close();

        }
...