我使用的相机,来自expo包,我有困难的相机视图失真。我的手机有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
有什么办法可以推断出最好的比率,即使是这样愚蠢的决议?
发布于 2018-11-25 21:17:20
在三星S9上,18.5:9的屏幕纵横比非常接近2:1。如果您不使用隐藏导航条,则用于相机预览的区域可能更接近所支持的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
})https://stackoverflow.com/questions/53467776
复制相似问题