Обработка изображений, полученных с помощью ImageReader на Android - PullRequest
0 голосов
/ 25 сентября 2018

Я получаю изображение из ImageReader в формате PixelFormat.RGBA_8888

. Мне нужно преобразовать это изображение в ARGB.

Получить простой буфер

private OnImageAvailableListener frameObserver = new OnImageAvailableListener() {
    public void onImageAvailable(ImageReader reader) {
        Image frame = reader.acquireNextImage();
        Image.Plane[] planes = frame.getPlanes();

        ByteBuffer buffer = planes[0].getBuffer();
        byte[] bytes = new byte[buffer.remaining()];
        buffer.get(bytes);

Но результаты не имеют для меня смысла.Это изображение размером 320x240, оно должно иметь байты 320X240X32 (RGBA_8888) ... но размер buffer.length составляет всего 307200 байт.

У него также есть Striderow 1280 и StridePixel 4, поэтому он должен быть еще больше.

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

Спасибо

1 Ответ

0 голосов
/ 26 сентября 2018

Глупо, я хотя RGBA_8888 был 8 байтов на канал, но это 8 бит (один байт).Таким образом, каждый пиксель занимает 4 байта в массиве (не 32).

...