在Android上处理ImageReader获取的图像

在Android上处理ImageReader获取的图像,android,bytebuffer,rgba,argb,image-reader,Android,Bytebuffer,Rgba,Argb,Image Reader,我正在从ImageReader接收格式为PixelFormat.RGBA_8888的图像 我想要的是将该图像转换为ARGB 获取缓冲区很简单 private OnImageAvailableListener frameObserver = new OnImageAvailableListener() { public void onImageAvailable(ImageReader reader) { Image frame = reader.acquireNextIm

我正在从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字节

它也有StrateRow 1280和StratePixel 4,所以它应该更大

我知道我可能会问一个基本的问题,但不幸的是,我找不到任何关于这方面的信息或教程


谢谢我的愚蠢,我认为RGBA_8888是每个通道8字节,但它是8位(一个字节)。因此,阵列上的每个像素是4字节(不是32字节)