android从onPreviewFrame获取像素数据转换为位图

android从onPreviewFrame获取像素数据转换为位图,android,bitmap,android-camera,getpixel,Android,Bitmap,Android Camera,Getpixel,我如何使用 onPreviewFrame(字节[]数据,摄像头) 为了获得像素(intx,inty)。我想将帧更改为位图,可以吗?我使用的是onPreviewFrame,因为我希望每秒获取像素数据,因此获取图片的时间太长。此链接是否有助于您了解它的功能。更重要的是,我不知道如何从onPreviewFrame获取图像,比如如果我导入图像,我可以进行所有计算,但我不知道如何从该方法获取图像。java转换图像格式的速度很慢,可以使用libuv来加速 @Override public void onPr

我如何使用 onPreviewFrame(字节[]数据,摄像头)
为了获得像素(intx,inty)。我想将帧更改为位图,可以吗?我使用的是onPreviewFrame,因为我希望每秒获取像素数据,因此获取图片的时间太长。

此链接是否有助于您了解它的功能。更重要的是,我不知道如何从onPreviewFrame获取图像,比如如果我导入图像,我可以进行所有计算,但我不知道如何从该方法获取图像。java转换图像格式的速度很慢,可以使用libuv来加速
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
    byte[] baos = convertYuvToJpeg(data, camera);
    if (baos != null) {
        Bitmap bitmap = Tool.loadBitmap(baos);
    }
}

public byte[] convertYuvToJpeg(byte[] data, Camera camera) {
    try {
        YuvImage image = new YuvImage(data, ImageFormat.NV21,
                camera.getParameters().getPreviewSize().width,
                camera.getParameters().getPreviewSize().height,
                null);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        Rect rect = new Rect(0, 0,
                camera.getParameters().getPreviewSize().width,
                camera.getParameters().getPreviewSize().height);
        //set quality
        int quality = 100;
        image.compressToJpeg(rect, quality, baos);
        return baos.toByteArray();
    } catch (Exception e) {
    }
    return null;
}