Обработка изображений, полученных с помощью ImageReader на Android

Я получаю изображение из 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 ответ

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

Другие вопросы по тегам