我有一个快速的问题。我正在使用 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(使用前将#替换为@)