你好!
项目使用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宽高比的手机来说,纵向上的大部分像素点都被浪费了。
总的来说,组件自动执行的放大这个动作不为开发者所控制,不是一个合理的做法。烦请查看并确认该问题,等候回复,谢谢!
。。。。到现在都有这个问题 我也是服了
其他手机测试了吗?