简介
我正在使用 CaptureRequest.Builder 并提供两个曲面作为目标:a SurfaceTexture 用于绘制GL和an ImageReader ( getSurface() )用于处理框架。
我通过设置 surfaceTexture.setDefaultBufferSize 通过创建 ImageReader.newInstance .
问题所在
看来 表面结构 OpenGL纹理得到的图像的纵横比不同于640x480(4:3),更像2560x1440(16:9)( 表面结构 占据全屏,请参阅 IMG 3 ). 需要注意的是,两款手机的分辨率纵横比相同 16:9 . (有意保留与侧面的纹理偏移)。
下面您可以看到 IMG 1 显示在监视器屏幕上,以及 IMG 2 和 IMG 3 是当前活动视图显示摄像头预览的手机屏幕截图。
问题是
如何正确施力 表面结构 或 GLSurfaceView.Renderer 要从相机获取特定(本例中为4:3)纵横比纹理图像,以获得任意大小的视图?
相关的
必须注意的是 an app 解决了这个问题 they change the view size 与所需的纵横比相对应。
另请参见 :
IMG 1 -显示的源图像:
IMG 2 -良好的纵横比( Google Nexus 5 -Android 6.0.1):
IMG 3 -纹理纵横比不好( LG-D855 -Android 5.0)
通过将LG phone更新为Android 6.0,“修复”了该问题。