关于android camera2 图像格式的一些问题

在做 android camera2 api 相关功能开发时,

遇到的一些问题,

这些无非就是图像保存,图像格式(包括转化,查看等等),图像大小等等..

在预览时,我们一般取ImageFormat.YUV_420_888 这种...

代码 一般类似 于这样:

mImageReader = ImageReader.newInstance(mPreviewSize.getWidth(), mPreviewSize.getHeight(),
                ImageFormat.YUV_420_888, 2);
        mImageReader.setOnImageAvailableListener(
                new OnImageAvailableListenerImpl(), mBackgroundHandler);

代码出处:

掘金  android 上 使用camera2 api 的示例

 

那要是 我们的 程序, 可能需要 nv21 这样的数据图像格式 ...

那么     该如何处理了 ...

在上面的   代码链接中,事实上 是有转化 代码的...

类似于这样子:

public static void yuv422ToYuv420sp(byte[] y, byte[] u, byte[] v, byte[] nv21, int stride, int height) {
        System.arraycopy(y, 0, nv21, 0, y.length);
        // 注意,若length值为 y.length * 3 / 2 会有数组越界的风险,需使用真实数据长度计算
        int length = y.length + u.length / 2 + v.length / 2;
        int uIndex = 0, vIndex = 0;
        for (int i = stride * height; i < length; i += 2) {
            nv21[i] = v[vIndex];
            nv21[i + 1] = u[uIndex];
            vIndex += 2;
            uIndex += 2;
        }
    }

 

最后 本文验证了 这博客中,类似 转换的代码:

亲测可以用,(效率未测..)

Android:YUV_420_888编码图像转换为I420和NV21格式字节数组

 

你可能感兴趣的:(android)