安卓:如何保存预览框为JPEG图像?(Android: How to save a preview

2019-06-23 23:55发布

我想预览图像保存为JPEG图像。

我试图写下面的代码:

public void onPreviewFrame(byte[] _data, Camera _camera)
{
    if(settings.isRecording())
    {
        Camera.Parameters params = _camera.getParameters();
        params.setPictureFormat(PixelFormat.JPEG);
        _camera.setParameters(params);
        String path = "ImageDir" + frameCount;
        fileRW.setPath(path);
        fileRW.WriteToFile(_data);
        frameCount++;
    }
}

但它无法打开保存文件为JPEG图像。 有谁知道如何预览画面保存为JPEG图像?

谢谢

Answer 1:

结帐这个代码。 我希望它能帮助

camera.setPreviewCallback(new PreviewCallback() {
                    @Override
                    public void onPreviewFrame(byte[] data, Camera camera) {
                        // TODO Auto-generated method stub
                        Camera.Parameters parameters = camera.getParameters();
                        Size size = parameters.getPreviewSize();
                        YuvImage image = new YuvImage(data, ImageFormat.NV21,
                                size.width, size.height, null);
                        Rect rectangle = new Rect();
                        rectangle.bottom = size.height;
                        rectangle.top = 0;
                        rectangle.left = 0;
                        rectangle.right = size.width;
                        ByteArrayOutputStream out2 = new ByteArrayOutputStream();
                        image.compressToJpeg(rectangle, 100, out2);
                        DataInputStream in = new DataInputStream();
                        in.write(out2.toByteArray());

                        }
                    }

                });
                camera.startPreview();


Answer 2:

你必须把它手动转换,也有Android平台的开发者名单上的一些例子,如果你浏览存档 - 主要处理与格式(亮度/色度等)的转换,然后将图像写入到一个位图,然后保存到一个文件。

这一切都有点痛的实在。



Answer 3:

我之前预览设定Camera.Parameters.setPreviewFormat(PixelFormat.JPEG)的PreviewFormat,但似乎它并不能真正设置previewformat ......顺便说一句,预览的默认格式是YCbCr_420_SP .. ..



Answer 4:

你必须先检查哪些支持预览格式为您的设备通过调用getSupportedPreviewFormats()。 确保JPEG呼吁setPreviewFormat(PixelFormat.JPEG)之前支持。



Answer 5:

JPEG是不是摄像头预览的格式。 作为官方文件说,

“只有ImageFormat.NV21和ImageFormat.YUY2支持现在”

为了从相机预览获得一个图片,你需要定义预览格式,如下:

Camera.Parameters parameters;
parameters.setPreviewFormat(ImageFormat.NV21); //or ImageFormat.YU2

在这之后,你压缩和JPEG保存为达尼的例子。



Answer 6:

_data可能不是JPEG格式。 你叫Camera.Parameters.setPreviewFormat(PixelFormat.JPEG)调用开始前预览?



文章来源: Android: How to save a preview frame as jpeg image?