Gar*_* S. 2 android android-camera galaxy
我们有一个应用程序,利用后部'相机'来捕获项目图像.到目前为止,我们测试过的所有设备在捕获图像方面都能正常工作,直到三星Galaxy SIII(S3).
仅在三星Galaxy SIII上,我们观察到Camera.onPictureTaken()正在返回一个原始图像,显示为隔行扫描而不是正确的捕获图像.调试每个摄像机参数设置,确定以下参数设置器导致问题.如果我们没有在参数上显式setPictureSize(),那么它按预期工作:
parameters.setPictureSize(targetPictureSize);
Run Code Online (Sandbox Code Playgroud)
默认情况下,参数.getPictureSize()以[w,h] = [3264,2448]的形式返回
'targetPictureSize'是根据最接近的匹配尺寸从下面返回来确定的,在这种情况下,我们使用[w,h] = [1600,1200]大小作为'targetPictureSize'
camera.getParameters().getSupportedPictureSizes();
Run Code Online (Sandbox Code Playgroud)
有人知道原因和解决方法吗?
当camera.setParameters预览处于活动状态时,使用与先前配置的图片大小不同(或默认值)调用时,会出现此问题.解决方案是在开始预览或停止预览之前设置图片大小,设置参数,然后重新开始预览.
parameters.setPictureSize(1600, 1200);
...
camera.stopPreview();
camera.setParameters(parameters);
camera.startPreview();
Run Code Online (Sandbox Code Playgroud)
技术说明:
隔行扫描的原因似乎是从相机返回的图像以默认分辨率(3264x2448)捕获,但标记为您使用setPictureSize指定的分辨率.结果,当显示这样的图像时,来自捕获图像的每行像素被显示为(默认分辨率/指定分辨率)像素行.如果图像尺寸为1600x1200,则会导致图像出现隔行扫描,而在其他分辨率(例如640x480)下,图像将显示完全损坏.
| 归档时间: |
|
| 查看次数: |
2104 次 |
| 最近记录: |