3

如果我得到一个缩放比率列表:parameters.getZoomRatios(),返回的值为 100,114...200(对应于 1x 1.14x ...2.0x 缩放),但在 200(2x 缩放)的相机预览中,图片看起来放大了 2 倍以上。在示例图像中,在 1x 和 2x 变焦时显示 6cm fov 和在 2x 变焦时显示 2.5cm……我期待在 2x 时为 3.0cm。

1 倍 (100) 变焦时 6 厘米 2.5 厘米,2 倍 (200) 变焦

我应该以另一种方式解释这些值吗?...其他人看到了吗?或者这个设备/版本是特定的,还是我应该乘以某个常数或其他值(焦距)?我正在尝试将我的相机视图与我的应用程序的渲染视图相匹配,当我缩放时,这会弄乱匹配。

代码在这里是标准的:

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;
    }   
4

2 回答 2

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]。使用这些变焦比,如果您在 1X 变焦时测试 6.0cm,那么在 2X 变焦时会得到 3.0cm。

但是,三星给我返回了这个列表: [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]。这些值有点奇怪,因为在 1X 变焦下测试 6.0cm 时,它无法在 2X 变焦下得到预期的 3.0cm。当我在设备的标准相机应用程序上验证缩放系数时,我意识到缩放比率必须是等距的。我生成了另一个缩放比率列表,其具有等距值:[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)”(参见原始三星列表),这实际上是一个错误,因为我不会有预期的 2X缩放,但 3X 缩放(请参阅生成的列表)。

如果您的 zoomRatios 列表不可信,请尝试生成您自己的 zoomRatios 列表,计算两个连续缩放比例之间的距离,假设正确返回了最小 (1X) 和最大缩放值。顺便说一句,缩放比例列表的大小也是正确的,因此要计算两个连续缩放比例值之间的差异,您可以使用公式:(greatestZoomRatio - minimumZoomRatio) / numberOfZoomRatioElements。

于 2013-03-13T13:21:33.150 回答
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, 178, 182, 186, 190, 195, 200] 这是误导,因为手机有 4 倍变焦,但列表没有以 400 结尾!

我看不懂逻辑,所以最后我就放弃了。如果有人可以提供解释,我会非常感兴趣。干杯

于 2014-07-31T16:56:02.523 回答