Android(安卓)SurfaceView 图像拉伸
16lz
2021-01-26
问题:项目中用了自定义Camera,其中的SurfaceView 里的预览图像被拉长了。
原因:相机所使用的Camera.parameters 的PictureSize 比例与SurfaceView 的比例不一致
解决方案:
1.从相机属性中选取一个合适比例的图像参数.并通知Camera mCamera.setParameters(mParams);
/** * @param sizes 相机支持的尺寸 * @param whRadio 宽高比 * @return 合适的Size */public Size getPropPreviewSize(List sizes,float whRadio){Collections.sort(sizes, sizeComparator);//排序一下int i = 0;for (Size size : sizes) {float radio=(float)size.width / size.height;if (Math.abs(radio-whRadio)
2.在SurfaceView 的surfaceChanged 方法中设置SurfaceView 的大小: WindowManager wm = (WindowManager)getContext().getSystemService(Context.WINDOW_SERVICE);int w = wm.getDefaultDisplay().getWidth();mSurfaceView.setLayoutParams(new FrameLayout.LayoutParams(x,x/whRadio));// x/whRadio:x除以宽高比得到高度h
3.重新开启预览
更多相关文章
- Android自定义照相机实现 拍照 录像
- SuperMap iClient 6R(2012) SP3新特性预览
- Android(安卓)Camera HAL3中预览preview模式下的控制流
- Android——camera摄像头
- opencv在android预览上实现人脸识别(4)
- android桌面预览效果
- xe5 android 调用照相机获取拍的照片
- Android开发必备偷懒神器之比例控件(正方形、比例矩形)、点击效
- Android自定义相机实现自动对焦和手动对焦