【发布时间】:2021-06-29 09:26:22
【问题描述】:
在处理PreviewView“FILL”缩放类型(例如PreviewView.ScaleType.FILL_CENTER)时,the docs 似乎暗示如果图像的分辨率高于视图,则不会缩放。
缩放预览,保持源宽高比,使其填充整个
PreviewView,并在视图中居中
如果图像的分辨率低于视图,我可以理解为什么要缩放图像,否则必须有黑色边框(即不会填充整个视图),FILL 保证不会显示。在图像分辨率高于视图的情况下,预览图像已经填满了整个视图(即不需要显示黑色边框),所以我的假设是不需要缩放预览。
例如,您的图像是 1920x1080,而您的视图是 800x800,我希望 PreviewView 不会缩放图像,而只是从现有图像的中心裁剪一个 800x800 的正方形(使用 FILL_CENTER)。
但是,在查看代码时,我找不到任何在分辨率较高时实际上阻止缩放发生的条件。
preview.setScaleX(surfaceRectInPreviewView.width() / mResolution.getWidth());
preview.setScaleY(surfaceRectInPreviewView.height() / mResolution.getHeight());
preview.setTranslationX(surfaceRectInPreviewView.left - preview.getLeft());
preview.setTranslationY(surfaceRectInPreviewView.top - preview.getTop());
这段代码在all the matrix transformations are done 之后(我不完全理解),所以我可能会误解它。所以我只是想验证我的假设,即如果图像的分辨率高于视图,是否会缩放图像。
【问题讨论】:
标签: android androidx android-camerax