我有一个SurfaceView可以在我的Android应用程序中显示实时相机预览图像。 SurfaceView覆盖了纵向画面的整个宽度和一部分屏幕高度。Nexus 7相机预览尺寸:不能改变长宽比
我试着设置各种预览尺寸,所以预览中有一个扭曲的长宽比,短而肥或高而瘦。
我打印的调试结果显示实际的预览显示尺寸和可用的预览相机尺寸,所以我可以计算出宽高比错误。
Screen size available for preview: w*h:1200*1646; Aspect ratio: 0.73
Rotation: 0; finalCameraRotation: 90; sideways: true
Supported Preview size: w*h:1080*1920: AspectRatio: 0.56: Error: -22.84%
Supported Preview size: w*h:768*1280: AspectRatio: 0.60: Error: -17.70%
...
通常,我会选择宽高比最低的预览尺寸,但我正在试验。 :
List<Camera.Size> ss = parameters.getSupportedPreviewSizes();
...
Camera.Size s = ss.get(pickOne);
parameters.setPreviewSize(s.width, s.height);
...
camera.setParameters(parameters);
...
camera.startPreview();
我通过在白色正方形指向照相机和使用Eclipse screenshotting它,然后测量在使用Photoshop的标尺工具的屏幕截图的白色正方形的图像测量的预览显示的纵横比误差。
予测得的正方形的x
和y
尺寸在屏幕像素和计算1-(y/x)
,并且如在调试日志预测上述宽高比错误,应该是相同的。
我想这对
- 阿尔卡特995,安卓4.0.4
- 三星注2,是Android 4.4.2
- 谷歌Nexus 7的Android 4.4.4
- 谷歌Nexus 5, Android 5.0
具有各种长宽比,从正方形误差多达25%,并且在所有这些中,我在预览中测量了宽高比大约1%的预测。 (有错误,相机可能不直的,它可能是一个有点失焦...)
除谷歌Nexus 7
无论我怎样设置预览大小为Nexus 7,所测量的高宽比为约2%太高,这恰好是可用的最佳可能的宽高比:
Supported Preview size: w*h:768*1024: AspectRatio: 0.75: Error: 2.87%
就好像一些其他方案来与后固定最佳预览大小我设定了它。实际上,我在代码中等待了10秒钟,然后从相机读回预览尺寸,这是我设置的尺寸,但显示屏没有反映出这一点。无论我设置的预览尺寸如何,显示屏始终处于最佳状态。
在Nexus 7上预览尺寸有什么奇怪的地方吗?
我知道我的setPreviewSize
做东西,因为我可以预览设置为144 * 176px,然后我看到在显示奇数采样像素化文物。但它的纵横比还是有差不多的!