Преобразовать android.media.Image (YUV_420_888) в растровое изображение

Я пытаюсь выполнить обработку данных изображения предварительного просмотра камеры с помощью камеры2 api, как предлагается здесь: предварительная обработка изображений изображений с помощью Android L и Camera2 API .

Я успешно получаю обратные вызовы, используя onImageAvailableListener, но для будущей обработки мне нужно получить растровое изображение из YUV_420_888 android.media.Image. Я искал подобные вопросы, но ни один из них не помог.

Не могли бы вы предложить мне, как конвертировать android.media.Image (YUV_420_888) в растровое изображение или, может быть, есть лучший способ прослушивания кадров предварительного просмотра?

Я пишу код об этом, и это предварительный просмотр данных YUV и изменение его в формате JPEG, и я могу использовать его для сохранения в виде растрового изображения, байт [] или других. (Вы можете увидеть класс «Распределение»).

В документе SDK говорится:
«Для эффективной обработки YUV с помощью android.rderscript: создайте выделение RenderScript с поддерживаемым типом YUV, флагом IO_INPUT и одним из размеров, возвращаемых getOutputSizes (Allocation.class), затем получите поверхность с помощью getSurface ()».

Вот код, надеюсь, он вам поможет: https://github.com/pinguo-yuyidong/Camera2/blob/master/camera2/src/main/rs/yuv2rgb.rs

Для более простого решения см. Мою реализацию здесь:

Преобразование YUV 420_888 в Bitmap (полный код)

Функция принимает media.image в качестве входных данных и создает три распределения RenderScript на основе y-, u- и v-плоскостей. Это следует за логикой YUV_420_888, как показано на этой иллюстрации в Википедии.

Введите описание изображения здесь

Однако здесь у нас есть три отдельные плоскости изображения для Y, U и V-каналов, поэтому я беру их как три байта [], то есть распределения U8. У-распределение имеет размер ширины * высота байтов, а u- и v-allocatons имеют размер ширины * высота / 4 байта каждый, что отражает тот факт, что каждый u-байт охватывает 4 пикселя (каждый бит по-одному).