2015-11-23 43 views
4

我最近在Camera 2 API上工作,我的设备有16:9的屏幕比例,但是我的相机传感器是4:3。所以我得到的预览尺寸是4:3。我想知道有没有什么方法可以裁剪尺寸,只显示16:9的部分?我尝试了很长时间,并没有找到任何相机2的帮助。Android Camera 2,如何裁剪预览尺寸

我目前的相机代码是类似于camera 2 basic sample

那么我应该如何裁剪预览,只显示纹理视图上的16:9部分?

谢谢!

+0

对此问题的回答在链接中提供[Android 5.0预览表面上的错误裁剪区域和捕获的静止图像](http://stackoverflow.com/questions/26583489/android-5-0-wrong-crop-regions -on-预览表面和捕获的静止图像) – Chandana

回答

0

您可以创建一个SurfaceTexture,比例为4:3而不是16:9。

您可以使用该示例项目中的自定义视图或使用新的ConstraintLayout创建自己的视图,并将宽度(或反转)的高度与16:9的比率设置为1。

然后,当你设置你的纹理大小:

texture.setDefaultBufferSize(width, height) 

你会得到不问题streching,因为你的质地相同的比例作为摄像头输出。

希望这有助于

0

你必须做 setUpCameraOutputs(int width, int height) 一些调试和检查你选择

// Danger, W.R.! Attempting to use too large a preview size could exceed the camera 
// bus' bandwidth limitation, resulting in gorgeous previews but the storage of 
// garbage capture data. 
mPreviewSize = chooseOptimalSize(map.getOutputSizes(SurfaceTexture.class), rotatedPreviewWidth, 
rotatedPreviewHeight, maxPreviewWidth, maxPreviewHeight, largest); 

也许你要好好选择一些有输出的大小的一部分。