0

我正在尝试获取相机的全屏预览。我通读了 camera2 的文档,上面写着Each Surface has to be pre-configured with an appropriate size and format (if applicable) to match the sizes and formats available from the camera device.这是我到目前为止所理解的。如果我的任何理解有误,请纠正我:

  1. 纹理视图和预览缓冲区需要具有相同的纵横比。它们可以是不同的分辨率,但如果您不希望预览看起来失真,则纵横比必须相同。

  2. 您应该将纹理视图的缓冲区大小设置为最佳选择的预览大小。camera2basic demo 似乎用这条线证实了这一点texture.setDefaultBufferSize(mPreviewSize.getWidth(), mPreviewSize.getHeight()

我的问题是,一旦你匹配纹理视图和预览的纵横比和大小相同,你如何缩放纹理视图以使其适合全屏?

camera2basic 演示的configureTransform方法似乎将 TextureView 转换为预览大小,但没有使其全屏显示。如何计算正确的比例因子以使 TextureView 全屏显示?

4

1 回答 1

0

你可以让你的 TextureView 在你的 Activity 布局中填满屏幕。然后,您需要调整 configureTransform() 方法以解决全屏 TextureView 和最接近的预览大小之间的纵横比差异;基本上你需要实现通常的信箱或邮筒效果。

当然,如果确实有匹配的纵横比,你可以直接使用它,但这不太可能。

于 2016-10-09T23:33:27.943 回答