我最近在Camera 2 API上工作,我的设备有16:9的屏幕比例,但是我的相机传感器是4:3。所以我得到的预览尺寸是4:3。我想知道有没有什么方法可以裁剪尺寸,只显示16:9的部分?我尝试了很长时间,并没有找到任何相机2的帮助。Android Camera 2,如何裁剪预览尺寸
我目前的相机代码是类似于camera 2 basic sample。
那么我应该如何裁剪预览,只显示纹理视图上的16:9部分?
谢谢!
我最近在Camera 2 API上工作,我的设备有16:9的屏幕比例,但是我的相机传感器是4:3。所以我得到的预览尺寸是4:3。我想知道有没有什么方法可以裁剪尺寸,只显示16:9的部分?我尝试了很长时间,并没有找到任何相机2的帮助。Android Camera 2,如何裁剪预览尺寸
我目前的相机代码是类似于camera 2 basic sample。
那么我应该如何裁剪预览,只显示纹理视图上的16:9部分?
谢谢!
您可以创建一个SurfaceTexture
,比例为4:3而不是16:9。
您可以使用该示例项目中的自定义视图或使用新的ConstraintLayout
创建自己的视图,并将宽度(或反转)的高度与16:9的比率设置为1。
然后,当你设置你的纹理大小:
texture.setDefaultBufferSize(width, height)
你会得到不问题streching,因为你的质地相同的比例作为摄像头输出。
希望这有助于
你必须做 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);
也许你要好好选择一些有输出的大小的一部分。
对此问题的回答在链接中提供[Android 5.0预览表面上的错误裁剪区域和捕获的静止图像](http://stackoverflow.com/questions/26583489/android-5-0-wrong-crop-regions -on-预览表面和捕获的静止图像) – Chandana