Intro
我使用CaptureRequest.Builder并提供两个曲面作为目标:绘制GL的SurfaceTexture和ImageReader (处理框架的getSurface())。
我通过设置surfaceTexture.setDefaultBufferSize和创建ImageReader.newInstance来设置所需的分辨率640x480。
问题
结果表明,SurfaceTexture OpenGL纹理得到的图像比640×480 (4:3)不同,更像2560x1440 (16:9)(SurfaceTexture占据全屏,参见IMG 3)。必须注意的是,这两款手机具有相同的分辨率高宽比16:9。(从侧面偏移的纹理是故意留下的)。
下面您可以看到IMG 1显示在监视器屏幕上,IMG 2和IMG 3是当前活动视图显示摄像机预览的手机屏幕截图。
问题
如何正确地迫使SurfaceTexture或GLSurfaceView.Renderer从相机中获得特定的(4:3 )宽比纹理图像,用于任意大小的视图?
相关
必须指出的是,有应用程序来解决问题,但是对于它们改变视图的大小。来说,它对应于所需的纵横比。
也见
IMG 1 -显示的源图像:

IMG 2 -好的纵横比(谷歌Nexus 5 -Android6.0.1):

IMG 3 -不良纹理纵横比(LG-D 855 -Android5.0)

发布于 2018-02-28 16:53:48
通过升级LG手机到Android6.0,“修正”了这个问题。
https://stackoverflow.com/questions/48988619
复制相似问题