我希望能够在分析步骤中获得与预览相同的精确图像。
我有一个预览用例:
val metrics = DisplayMetrics().also { binding.codeScannerView.display.getRealMetrics(it) }
val screenAspectRatio = Rational(metrics.widthPixels, metrics.heightPixels)
val previewConfig = PreviewConfig.Builder().apply {
setTargetAspectRatio(screenAspectRatio)
}.build()
旁边是我分析用例配置的内容:
val analyzerConfig = ImageAnalysisConfig.Builder().apply {
setTargetResolution(Size(metrics.heightPixels, metrics.widthPixels))
setTargetAspectRatio(screenAspectRatio)
val analyzerThread = HandlerThread(
"QrCodeReader").apply { start() }
setCallbackHandler(Handler(analyzerThread.looper))
setImageReaderMode(
ImageAnalysis.ImageReaderMode.ACQUIRE_LATEST_IMAGE)
}.build()
我的预览是全屏的,所以它的尺寸是1440x2560。但是如果我尝试从分析器中的ImageProxy获取尺寸,我得到的是1920x1050,这似乎有错误的尺寸,并且宽度和高度被交换了。为什么会这样,我该如何强制分析步骤具有与全屏相同的尺寸?