- camera组件视野宽高比不为4:3时,为什么拍摄的照片对物体进行了放大?
你好! 项目使用API "takePhoto" + 组件"camera"来实现拍照功能。因为需要根据照片中物体大小来计算手机与物体的距离,所以要求拍摄的照片不能对物体进行放大。但实验发现,camera组件在视野宽高比不为4:3时,拍摄的照片对物体进行了放大。 相关情况如下: 1、测试条件 1)华为Mate10 2)竖屏拍照,定义短的一边为宽,长的一边为高,则手机屏幕宽高比为9:16 2、代码及测试方法 【WXML】 <camera device-position="back" flash="off" frame-size="large" binderror="cameraError" class="camera-view"></camera> 【WXSS】 .camera-view { width: 100%; height: 1000rpx; /* 测试时使用不同的height值 */ margin-top: 5rpx; } 测试时,WXSS camera-view中的height使用不同的值,然后在同一个位置对同一个键盘进行拍照。根据照片中按键的数量和大小确定放大情况。 3、测试结果 1)“height: 300rpx”时拍摄的照片 [图片] 2)“height: 562.5rpx”时拍摄的照片。这种情况下图像宽:高=750rpx:562.5rpx=4:3。 [图片] 3)“height: 1000rpx”时拍摄的照片。 [图片] 4、分析 对比3中的图片按键的大小可以得知,宽高比不为4:3时,都进行了放大。对比第二张图片与第三张图片,第三张图片中横向按键数量明显少于第二张图片,表明横向上可以覆盖的景物范围明显减少。可见: 1)API/组件在拍照并获取照片时对宽高比进行判断,若不是4:3,则进行图像放大。然后根据设定的width与height截取放大后图像的左上角那一部分(感觉如此操作)。而更常规或者合理的做法是不进行放大,根据设定的width与height直接截取图像(当然,若camera能增加参数给开发者用于图像的放大,或许不失为一个好主意); 2)放大以后,导致横向上可以覆盖的景物范围减少; 3)为了图像不被放大,height设为562.5rpx,则对于9:16宽高比的手机来说,纵向上的大部分像素点都被浪费了。 总的来说,组件自动执行的放大这个动作不为开发者所控制,不是一个合理的做法。烦请查看并确认该问题,等候回复,谢谢!
2019-10-31 - 严重问题,7.0.9版本微信onCameraFrame回调不执行,无法监听相机帧返回
7.0.9版本微信onCameraFrame回调不执行,无法监听相机帧返回
2019-12-02