Jetpack Compose相机预览与拍摄输出不一致问题求助
问题:Jetpack Compose相机预览与拍摄输出不一致的解决需求
我开发了一款基于Jetpack Compose的相机视图应用,期望拍摄输出的图片与Android预览视图完全一致。当前预览画面和拍摄输出图片存在差异,我需要解决该问题——因为后续将在预览中心添加框体,并利用其在预览中的位置对输出图片进行裁剪。
以下是我的CameraView Composable代码:
@Composable fun CameraView( isOpenFrontCamera: Boolean, outputDirectory: File, executor: Executor, onImageCaptured: (Uri) -> Unit, onError: (ImageCaptureException) -> Unit, onCloseCameraClick: () -> Unit ) { val lensFacing: Int = if (isOpenFrontCamera) CameraSelector.LENS_FACING_FRONT else CameraSelector.LENS_FACING_BACK val context = LocalContext.current val lifecycleOwner = LocalLifecycleOwner.current val preview = Preview.Builder().build() val previewView = remember { PreviewView(context) } val imageCapture: ImageCapture = remember { ImageCapture.Builder().setCaptureMode(ImageCapture.CAPTURE_MODE_MAXIMIZE_QUALITY).build() } val cameraSelector = CameraSelector.Builder() .requireLensFacing(lensFacing) .build() LaunchedEffect(lensFacing) { val cameraProvider = context.getCameraProvider() cameraProvider.unbindAll() cameraProvider.bindToLifecycle( lifecycleOwner, cameraSelector, preview, imageCapture ) preview.setSurfaceProvider(previewView.surfaceProvider) } //Screen Box( contentAlignment = Alignment.BottomCenter, modifier = Modifier .fillMaxSize()) { AndroidView({ previewView }, modifier = Modifier.fillMaxSize()) IconButton( modifier = Modifier.padding(bottom = 20.dp), onClick = { Log.d("takePhoto", "ON CLICK") takePhoto( imageCapture = imageCapture, outputDirectory = outputDirectory, executor = executor, onImageCaptured = { imageUri -> onImageCaptured(imageUri) }, onError = onError ) }, content = { Icon( painter = painterResource(id = R.drawable.ic_baseline_camera_24), contentDescription = stringResource(R.string.take_picture), tint = Color.White, modifier = Modifier .fillMaxSize(0.2f) ) } ) } }
应用预览截图:
拍摄输出截图:
内容的提问来源于stack exchange,提问作者Kunal Kalwar
相关产品推荐
相关产品推荐

