android Camera SurfaceView变形,为什么?

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

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

1.预览尺寸固定

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

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

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

  这样回留下一条白边

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

 





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值