Android SurfaceView 预览模糊

2024-03-22

我有一个快速的问题。我正在使用 Android 的 SurfaceView 拍照并保存。然而,预览尺寸和图像质量本身都很糟糕;就像,它非常模糊。图像质量根本没有清晰度。

这是我初始化 SurfaceView 的地方:

                    camera.setDisplayOrientation(90);
                    Parameters parameters = camera.getParameters();
                    parameters.setWhiteBalance(Camera.Parameters.WHITE_BALANCE_AUTO);
                    parameters.setExposureCompensation(0);
                    parameters.setPictureFormat(ImageFormat.JPEG);
                    parameters.setJpegQuality(100);

                    Camera.Size picSize =   getOptimalPreviewSize(parameters.getSupportedPreviewSizes(),
                            getResources().getDisplayMetrics().widthPixels, 
                            getResources().getDisplayMetrics().heightPixels);

                    parameters.setPictureSize(picSize.width, picSize.height);
                    parameters.setPreviewSize(picSize.width, picSize.height);

                    camera.setParameters(parameters);
                    camera.setPreviewDisplay(holder);
                    camera.startPreview();

getOptimalPreviewSize() 返回parameters.getSupportedPreviewSizes() 中可用的最佳大小。它返回的尺寸是 1280x720,这是我的手机支持的最佳尺寸。然而,surfaceView仍然很模糊。我正在做的事情有什么明显错误吗,或者有没有办法优化surfaceView?谢谢。


图像和预览可能显得模糊有两个原因

1)您设置的图片尺寸和预览尺寸的方式错误。您必须查询支持的尺寸并确定最适合您的尺寸,然后从您获得的列表中设置尺寸。您不能给出仲裁值。检查此示例应用程序以获取实施细节 -https://github.com/josnidhin/Android-Camera-Example https://github.com/josnidhin/Android-Camera-Example

2)您必须将相机设置为自动对焦模式,以便它自动对焦。 (更好的是通过适当的用户界面实现触摸聚焦)。相机启动后,只需设置以下内容

private void setCamFocusMode(){

    if(null == mCamera) {
        return;
     }

    /* Set Auto focus */ 
    Parameters parameters = mCamera.getParameters();
    List<String> focusModes = parameters.getSupportedFocusModes();
    if (focusModes.contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE)) {
        parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);   
    } else if (focusModes.contains(Camera.Parameters.FOCUS_MODE_AUTO)) {
        parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
    }   

    mCamera.setParameters(parameters);
}

确保您的清单中有适当的许可

希望这可以帮助

问候, 什里什

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android SurfaceView 预览模糊 的相关文章

随机推荐