我想在全屏中使用camera2 api显示预览。我选择的相机尺寸是4160x3120 (16:9),我的屏幕是1080x1920 (9:16)。因此,如果我想要正确缩放预览,我必须裁剪相机输出:
Rect zoomCrop = new Rect(0, 0, 1755, 3120);
captureRequestBuilder.set(CaptureRequest.SCALER_CROP_REGION, zoomCrop);裁剪预览应该是大小为1755x3120,其比例也是9:16。但是预览仍然是分散的。
问题:我正确地使用了SCALER_CROP_REGION吗?如果没有,我该怎么用呢?
提前感谢
发布于 2018-08-28 06:39:38
我一直在努力解决同样的问题,因为我想将相机预览流实现为正方形TextureView。
使用SCALER_CROP_REGION似乎是解决不兼容高宽比问题的明显地方,但我认为操作不会真正改变结果的纵横比,因此不会阻止拉伸/翘曲行为。(医生们谈论这件事)
我通过实现与Camera2Basic示例项目中类似的转换(参见Camera2BasicFragment中的函数configureTransform )取得了进展。
使用这种视图级缩放矩阵,您可以在不改变视图大小的情况下管理相机预览的缩放/裁剪。
发布于 2017-05-12 10:26:08
这听起来像你得到一个景观图像,并显示在肖像视图-这意味着你将有‘柱盒’线以上和下方的图像,如果你想避免扭曲。
如果你想填充屏幕,没有变形或柱子框线,那么你将不得不接受这部分你的图像将是不可见的,因为它的形状以外的观看区域。
SCALER_CROP_REGION在没有图表的情况下很难理解--我在这里的Andoir源代码文档中找到了最好的解释:再处理。
这里有一个图表可以作为一个例子--突出显示协调器是如何被使用的。如果你看你的作物区域,当你从(0,0)开始的时候,它会偏向左上角,我不确定你到底想要什么。

https://stackoverflow.com/questions/43917823
复制相似问题