Android:如何从SurfaceView保存第一个预览框架

时间:2013-04-18 13:29:57

标签: android bitmap camera

我想知道是否可以保存first frame相机预览,SurfaceView上可见。 在我的活动中,我目前已经实现了所有SurfaceHolder.Callback方法。当我在相机对象上调用startPreview而不是takePicture时,回调被正确执行,但我需要更快地拍摄并保存图片,因此预览的第一个可见帧将非常有用。 我该怎么办?
任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:0)

这可能看起来非常简单,但我会做这样的事情将第一帧保存到Bitmap

mCamera.setPreviewCallback(new PreviewCallback() {
                public void onPreviewFrame(byte[] data, Camera camera) {

                    if (image == null) {
                        out = new ByteArrayOutputStream();
                        yuvImage = new YuvImage(data, ImageFormat.NV21, camera
                                .getParameters().getPreviewSize().width, camera
                                .getParameters().getPreviewSize().height, null);

                        yuvImage.compressToJpeg(new Rect(0, 0, camera
                                .getParameters().getPreviewSize().width, camera
                                .getParameters().getPreviewSize().height), 0,
                                out);

                        imageBytes = out.toByteArray();
                        image = BitmapFactory.decodeByteArray(imageBytes, 0,
                                imageBytes.length);
                    }

                }
            });