如果我使用以下参数获取缩放比例列表:parameter.getZoomratios(),则返回值为100,114 … 200(对应于1x 1.14x … 2.0x缩放),但在相机预览中为200(2x缩放),图片显示的放大倍数超过2倍.在示例图像中,在1x处显示6cm的焦点,在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; }
解决方法:
调用函数“ 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].
例如,如果我要将缩放比例设置为2倍,则将显示“ parameters.setZoom(20)”(请参阅原始的三星列表),这实际上是一个错误,因为我将无法获得预期的2倍.缩放,但3倍缩放(请参见生成的列表).
如果不信任您的zoomratios列表,请尝试生成您自己的zoomratios列表,并假定正确返回了最小(1X)和最大缩放值,并计算两个连续缩放比率之间的距离.顺便说一句,缩放比例列表的大小也是正确的,因此要计算两个连续缩放比例值之间的差异,可以使用以下公式:(greatestZoomratio-minimumZoomratio)/ numberOfZoomratioElements.
总结以上是内存溢出为你收集整理的Android camara参数getZoomRatio()值与预期不符全部内容,希望文章能够帮你解决Android camara参数getZoomRatio()值与预期不符所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)