【问题标题】:Android Camera 2, how to crop preview sizeAndroid Camera 2,如何裁剪预览大小
【发布时间】:2018-08-28 16:19:14
【问题描述】:

我最近正在开发 Camera 2 API,我的设备屏幕比例为 16:9,但我的相机传感器为 4:3。所以我得到的所有预览尺寸都是 4:3。我想知道有什么办法可以裁剪大小并且只显示 16:9 部分?试了半天也没找到camera 2的帮助。

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

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

谢谢!!

【问题讨论】:

标签: android preview android-camera2


【解决方案1】:

answered a similar question 在遇到同样的问题后,无法更改实际视图的纵横比以匹配相机输出(正如 Sulfkain 的回答所暗示的那样)。

Tl;dr:答案在于Camera2BasicFragment 中的configureTransform。尽管它们的功能主要是针对方向实现的,但缩放矩阵可以解决与相机输出形状错误的视图的缩放/纵横比问题。

【讨论】:

    【解决方案2】:

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

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

    那么当你设置纹理的大小时:

    texture.setDefaultBufferSize(width, height)
    

    拉伸不会有问题,因为纹理与相机输出的比例相同。

    希望对你有帮助

    【讨论】:

      【解决方案3】:

      你必须做一些调试 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);
      

      也许你必须在那里硬选择一些东西。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-10-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-12
        相关资源
        最近更新 更多