原因可能是图片保存路径不正确,下面是示例代码来保存CameraX捕获的图片:
// 拍照 val outputFileOptions = ImageCapture.OutputFileOptions.Builder( File(getExternalFilesDir(null), "img_${System.currentTimeMillis()}.jpg") ).build() imageCapture.takePicture( outputFileOptions, ContextCompat.getMainExecutor(this), object : ImageCapture.OnImageSavedCallback { override fun onImageSaved(outputFileResults: ImageCapture.OutputFileResults) { // 保存成功 }
override fun onError(exception: ImageCaptureException) {
// 保存失败
}
})
需要注意的是,这里的getExternalFilesDir(null)会返回一个包含应用特定数据的目录,用于在应用卸载时自动清除这些数据,并且需要相应的文件读写权限。此外,如果您使用的是Android 10及以上版本,请确保已经请求了相关的存储权限。