android Camera SurfaceView变形,为什么?

我们在Android中经常会使用SurfaceView编写自定义的摄像头,可是有的时候会经常会出现图像的变形,我们就会很郁闷的问这到底是为什么呢?其实这个最根本的原因是SurfaceView和PreViewSize的尺寸不是同一个比率。因为camera在显示时会将预览帧数据缩放成Surfaceview大小,当比率不一致必然会物体变形。至于这个缩放算法可能不同手机会有区别。

通过看同事的代码以及上网查,发现解决办法两种:

1.预览尺寸固定

   修改surfaceview的宽高,使其宽/高 = 预览尺寸的宽/高

    之前我们的facesdk对应的demo都是指定预览尺寸480*640 宽/高=0.75,为了使预览图像时不变形,调整surfaceview的高(在宽度上填充父窗体,这样比较符合人的审美观点,但是问题就随之而来了,那就是高度如何定义?自定义布局文件

   用 “预览尺寸的宽高”比和“屏幕的宽”计算surfaceview的高,参考代码facesdk对应的track106demo.

  这样回留下一条白边

2.根据屏幕的宽高比选择合适的预览尺寸。

 





你可能感兴趣的:(android Camera SurfaceView变形,为什么?)