如果我得到一个缩放比例列表:parameters.getZoomRatios(),返回的值是100,114 ... 200(相当于1x 1.14x ... 2.0x缩放),但是相机预览为200(2x缩放),图片放大2倍以上。在样本图像中,1x显示6cm fov,2x放大显示2.5cm ...我预计在2x时3.0cm。
我还有另一种解释这些价值观的方法吗?......其他人都看到了吗?或者这个设备/版本是否具体,或者我应该乘以一些常数或其他值(焦距)?我正在尝试将我的相机视图与我的应用程序的渲染视图相匹配,并且当我缩放时,这会弄乱匹配。
代码是标准的:
public void setZoom(int pZoom)
{
final Camera.Parameters p = this.mCamera.getParameters();
if (p.isZoomSupported())
{
p.setZoom(pZoom);
this.mCamera.setParameters(p);
}
}
public int getZoom( android.hardware.Camera camera)
{
int zoom = 100;
final Parameters p = camera.getParameters();
if (p.isZoomSupported())
{
final List<Integer> zoomRatios = p.getZoomRatios();
final int zoomIndex = p.getZoom();
if (zoomIndex < zoomRatios.size())
{
zoom = zoomRatios.get(zoomIndex);
}
//Log.d("zoom","ix:" + zoomIndex + " z:"+zoom);
}
return zoom;
}
答案 0 :(得分:3)
调用函数“camera.getParameters()。getZoomRatios()”似乎是获得相机缩放比率最安全的方法。嗯,就是这样,但据我所知 - 它在每个Android设备上的行为都不一样。
我测试了不同设备上的缩放比例:当在华硕上调用getZoomRatios()时,它返回了: [100,125,150,175,200,225,250,275,300,325,350,375,400,425,450, 475,500,525,550,575,600,625,650,675,700,725,750,775,800]。 使用这些缩放比率,如果您在1倍变焦下测试6.0厘米,则在2倍变焦时会产生3.0厘米。
然而,三星将此列表退回给我: [100,102,104,109,111,113,119,121,124,131,134,138,146,150,155, 159,165,170,182,189,200,213,222,232,243,255,283,300,319,364,400]。 这些值有点奇怪,因为在1倍变焦下测试6.0厘米时,它无法在2倍变焦时产生预期的3.0厘米。当我在设备的标准相机应用程序上验证缩放系数时,我意识到缩放比率必须是等距的。我生成了另一个缩放比例列表,具有等距值:[100,110,120,130,140,150,160,170,180,190,200,210,220,230,240,250,260,270, 280,290,300,310,320,330,340,350,360,370,380,390,400]。
例如,如果我想将缩放设置为2X,我将有“parameters.setZoom(20)”(参见原始三星列表),这实际上是一个错误,因为我不会有预期的2倍变焦,但是3倍变焦(参见生成的列表)。
如果您的zoomRatios列表不可信,请尝试生成您自己的zoomRatios列表,计算两个连续缩放比率之间的距离,假设正确返回最小(1X)和最大缩放值。顺便说一下,缩放比率列表的大小也是正确的,因此,为了计算两个连续缩放比率值之间的差异,您可以使用以下公式:(greatZoomRatio - smallestZoomRatio)/ numberOfZoomRatioElements。
答案 1 :(得分:1)
在尝试修复不同手机型号的等效缩放级别时,我也偶然发现了这个问题。比率似乎很有希望,但我放弃使用它们,因为它太不一致了。
作为亚瑟王,我也意识到这些值应该是等距的,只有最后一个值有时并不反映实际的缩放系数。这是我的三星S4的比例: [100,102,104,107,109,112,114,117,120,123,125,128,131,135,138,141,144,148,151,155,158,162,166,170,174,174 ,178,182,186,190,195,200] 这是错误的,因为手机有4倍变焦,但列表不会以400结束!
我没有看到逻辑,所以最后我放弃了。 如果有人能提供解释,我会很感兴趣。 干杯