保存捕获的图像

问题描述 投票:2回答:2

我有这段代码(仅用于实验):

public void captureFromCam(View v) throws CameraAccessException {
    try {
        cm.openCamera("0", new CameraDevice.StateCallback(){
            @Override
            public void onClosed(CameraDevice camera) {
                super.onClosed(camera);
            }

            @Override
            public void onError(CameraDevice camera, int error) {

            }

            @Override
            public void onOpened(final CameraDevice cam) {
                Log.d("CameraApp", "Camera Opened");
                ImageReader ir = ImageReader.newInstance(800, 600, 256, 1);
                Surface surface = ir.getSurface();
                final ArrayList<Surface> l = new ArrayList();
                l.add(surface);
                try {
                    cam.createCaptureSession(l, new CameraCaptureSession.StateCallback() {
                        @Override
                        public void onConfigured(CameraCaptureSession session) {
                            Log.e("CameraApp", "Configured");
                            CaptureRequest.Builder builder = null, b2;
                            try {
                                builder = cam.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE);
                            } catch (CameraAccessException e) {
                                e.printStackTrace();
                            }
                            builder.addTarget(l.get(0));
                            CaptureRequest request = builder.build();
                            try {
                                session.capture(request, new CameraCaptureSession.CaptureCallback() {
                                    @Override
                                    public void onCaptureCompleted(CameraCaptureSession session, CaptureRequest request, TotalCaptureResult result) {
                                        Log.e("CameraApp", "Captured");
                                    }
                                }, null);
                            } catch (CameraAccessException e) {
                                e.printStackTrace();
                            }
                        }

                        @Override
                        public void onConfigureFailed(CameraCaptureSession session) {

                        }
                    }, null);
                } catch (CameraAccessException e) {
                    e.printStackTrace();
                }

            }

            @Override
            public void onDisconnected(CameraDevice camera) {

            }
        }, null);
    } catch (CameraAccessException e) {
        e.printStackTrace();
    }

}

有趣的部分是onCaptureCompleted,因为我理解结果不知何故是我的照片。

如何将此图片保存到文件?或者如果它不是我的照片,我的照片在哪里以及如何将其保存到文件中?

我知道这个问题已得到解答,但这是API 21,它与旧版本截然不同。

android android-camera android-image
2个回答
© www.soinside.com 2019 - 2024. All rights reserved.