我正在使用来自 expo
包的相机,但我遇到了相机 View 失真的问题。我的手机有 2:1
比例,这是非标准比例。
当我使用相机的 getSupportedRatiosAsync
方法时,我得到各种比率,如 1:1
、2:1
、4:3
、16:9
,但只有2:1
看起来不错。
如何选择适合设备自然分辨率的比率?有没有办法访问设备的首选比率?或者是否有任何破解,比如始终选择 16:9
并让相机组件添加黑边,而实际设备的比例不适合 16:9
?
编辑:
我的手机分辨率是 2196x1080
,因此正确的比例应该是 2:1
。但是我无法想出一个可以计算 2196x1080
=>2:1
的函数,因为 (2 * 1080) !== 2196
有什么方法可以推断出即使是这样愚蠢的分辨率的最佳可能比率?
最佳答案
在三星 S9 上,18.5:9
的屏幕宽高比非常接近 2:1
。如果你不这样做 hide the navigation bar ,专用于相机预览的区域可能更接近支持的 2:1
。
但是,如果您希望它在所有具有不同屏幕宽高比和不同支持的相机宽高比的设备上工作,您必须将预览裁剪到您的窗口,参见例如https://github.com/waitopiggu/rn-camera-android-cropping-test .
至于选择最佳相机长宽比,你是对的,完全匹配可能无法获得;让我们找到最接近我们想要的那个:
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
})
关于android - React Native Android 获取设备的比率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53467776/