我从 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,所以应该更大。
我知道我可能会问一个基本问题,但不幸的是我找不到任何关于此的信息或教程。
谢谢