Mil*_*ele 6 android surfaceview android-camera
我有一个快速的问题.我正在使用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();
Run Code Online (Sandbox Code Playgroud)
getOptimalPreviewSize()返回parameters.getSupportedPreviewSizes()中可用的最佳大小.它返回的尺寸是1280x720,这是我的手机支持的最佳尺寸.但是,surfaceView仍然非常模糊.我正在做什么明显错误,或者有没有办法优化surfaceView?谢谢.
小智 29
您的图像和预览可能会显得模糊,这有两个原因
1)您设置图片大小和预览大小的方式是错误的.您必须查询支持的尺寸并确定最适合您的尺寸,并从您已获得的列表中设置尺寸.你不能给出仲裁价值.查看此示例应用程序以获取实现详细信息 - https://github.com/josnidhin/Android-Camera-Example
2)您必须将相机置于自动模式,以便自动对焦.(更好的是实现触摸以使用适当的ui进行聚焦).一旦你的相机启动,只需设置如下
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);
}
Run Code Online (Sandbox Code Playgroud)
确保您的清单中有适当的权限
希望这可以帮助
问候,羞涩
| 归档时间: |
|
| 查看次数: |
5941 次 |
| 最近记录: |