Обработка изображений, полученных с помощью 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).