如何使用camera2获得全屏纹理视图?
How to get fullscreen textureview using camera2?
我正在尝试获取相机的全屏预览。我通读了 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.
这是我目前的理解。如果我的理解有误,请指正:
纹理视图和预览缓冲区需要具有相同的纵横比。它们可以是不同的分辨率,但如果您不希望预览看起来失真,则纵横比必须相同。
您应该将纹理视图的缓冲区大小设置为最佳选择的预览大小。 camera2basic 演示似乎用行 texture.setDefaultBufferSize(mPreviewSize.getWidth(), mPreviewSize.getHeight()
.
证实了这一点
我的问题是,一旦您将纹理视图和预览的纵横比和大小匹配为相同,您如何缩放纹理视图以使其适合全屏?
camera2basic 演示的 configureTransform
方法似乎将 TextureView 转换为预览大小,但没有使其全屏显示。如何计算正确的比例因子以使 TextureView 全屏显示?
您可以让您的 TextureView 在 Activity 的布局中填满屏幕。然后,您需要调整 configureTransform() 方法以解决全屏 TextureView 和最近预览尺寸之间的纵横比差异;基本上你需要实现通常的字母或邮筒效果。
当然,如果正好有匹配的宽高比,可以直接用,不过这种可能性不大。
我正在尝试获取相机的全屏预览。我通读了 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.
这是我目前的理解。如果我的理解有误,请指正:
纹理视图和预览缓冲区需要具有相同的纵横比。它们可以是不同的分辨率,但如果您不希望预览看起来失真,则纵横比必须相同。
您应该将纹理视图的缓冲区大小设置为最佳选择的预览大小。 camera2basic 演示似乎用行
texture.setDefaultBufferSize(mPreviewSize.getWidth(), mPreviewSize.getHeight()
. 证实了这一点
我的问题是,一旦您将纹理视图和预览的纵横比和大小匹配为相同,您如何缩放纹理视图以使其适合全屏?
camera2basic 演示的 configureTransform
方法似乎将 TextureView 转换为预览大小,但没有使其全屏显示。如何计算正确的比例因子以使 TextureView 全屏显示?
您可以让您的 TextureView 在 Activity 的布局中填满屏幕。然后,您需要调整 configureTransform() 方法以解决全屏 TextureView 和最近预览尺寸之间的纵横比差异;基本上你需要实现通常的字母或邮筒效果。
当然,如果正好有匹配的宽高比,可以直接用,不过这种可能性不大。