我最近正在开发Camera 2 API,我的设备有16:9的屏幕比例,但我的相机传感器是4:3。所以我得到的所有预览尺寸都是4:3。我想知道有没有办法得到一个裁剪尺寸,并且只显示16:9的部分?我试了很长时间,但没有找到任何帮助的相机2。
我现在的相机代码和camera 2 basic sample很相似。
那么,我应该如何裁剪预览,并只在纹理视图上显示16:9的部分?
谢谢!!
发布于 2018-08-28 14:45:48
我在遇到同样的问题后answered a similar question,并且不能改变实际视图的纵横比来匹配相机输出(正如Sulfkain的答案所暗示的那样)。
答案在于Camera2BasicFragment中的configureTransform。虽然它们的功能主要用于定向,但缩放矩阵可以解决与相机输出形状错误的视图的缩放/纵横比问题。
发布于 2018-02-14 18:35:56
您可以使用您的比例4:3而不是16:9来创建SurfaceTexture。
您可以使用该示例项目中的自定义视图,也可以使用新的ConstraintLayout创建自己的视图,并从宽度的16:9 (或反比)设置高度比率。
然后,当您设置纹理的大小时:
texture.setDefaultBufferSize(width, height)你将不会有任何问题,因为你的纹理是相同的比例,你的相机输出。
希望这能有所帮助
发布于 2018-02-14 18:44:28
您必须在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);也许你必须在那里硬选择一些东西。
https://stackoverflow.com/questions/33876196
复制相似问题