Я пытаюсь сделать снимок YUV, но оно растянуто. Я использую Android Camera2 после этого https://github.com/googlearchive/android-Camera2Basic. Android SDK - 28.
Я сталкиваюсь со странным поведением, когда снимаю кадр камеры в YUV 2048x1536 из метода setOnImageAvailableListener () с помощью ImageReader. Захват растягивается:
Что я делаю:
pictureImageReader.setOnImageAvailableListener(
reader -> {
Image image = reader.acquireLatestImage();
if(image != null){
ByteBuffer buffer = image.getPlanes()[0].getBuffer();
byte[] bytes = new byte[buffer.capacity()];
buffer.get(bytes);
Bitmap bitmapImage = BitmapFactory.decodeByteArray(bytes, 0, bytes.length, null);
image.close();
}
}, mBackgroundHandler);
Чтобы преобразовать изображение в растровое, я использовал этот Как преобразовать android.media .Изображение в растровый объект?:
Image image = reader.acquireLatestImage();
ByteBuffer buffer = image.getPlanes()[0].getBuffer();
byte[] bytes = new byte[buffer.capacity()];
buffer.get(bytes);
Bitmap bitmapImage = BitmapFactory.decodeByteArray(bytes, 0, bytes.length, null);
Однако, если я изменю разрешение, мой захват будет в порядке (YUV 960x720):
Не знаю, почему захват в YUV 2048x1536 растянут, а в YUV 960x720 нет. Единственное изменение - это разрешение
Спасибо