React Native Android获取设备的比例

阿尔伯特·内梅克

我正在使用expo包装中提供的相机,但相机视图失真有问题。我的手机有2:1比率,这是非标准比率。

当我使用getSupportedRatiosAsync相机的方法,我得到各种类似比率1:12:14:316:9,但只有2:1看起来不错。

如何选择适合设备自然分辨率的比例?有没有办法访问设备的首选比率?还是周围有什么骇人听闻的东西,例如总是选择16:9并让相机组件增加黑边,而实际设备的比例却不适合16:9

编辑:

我的手机分辨率是2196x1080,所以正确的比例应该是2:1但是我无法提出一个可以计算2196x1080=>的函数2:1,因为(2 * 1080) !== 2196

即使有这种愚蠢的分辨率,有什么方法可以推断出最佳的比率吗?

亚历克斯·科恩

在三星S9上,的屏幕纵横比18.5:9非常接近2:1而且如果您不隐藏导航栏,则专用于摄像机预览的区域可能会更靠近被推荐的区域2:1

但是,如果要在所有具有不同屏幕长宽比和受支持的相机长宽比的设备上正常工作,则必须将预览裁剪到窗口,请参见例如https://github.com/waitopiggu/rn-camera-android-裁剪测试

至于选择最佳的相机长宽比,您可能无法完全匹配;让我们找到最接近我们想要的一个:

const wantedRatio = height/width
var bestRatio = 0;
var bestRatioError = 100000;
for (i in ratios) {
    const r = ratios[i].split(":")
    if (abs(wantedRatio - r[0]/r[1]) < bestRatioError) {
        bestRatioError = abs(wantedRatio - r[0]/r[1])
        bestRatio = ratios[i]
    }
}

this.setState({
    bestRatio
})

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章