Android:如何通过CameraX获取Bitmap并在ImageView中显示
CameraX拍照后获取Bitmap并在ImageView预览的解决方案
你可以通过以下步骤实现需求:
- 确认通过
outputFileResults.getSavedUri()获取图片Uri,注意做空值校验 - 利用ContentResolver读取图片文件流,转换为Bitmap对象
- 由于
onImageSaved回调运行在后台线程,必须切换到主线程更新ImageView
修改你的onImageSaved回调代码如下:
@Override public void onImageSaved(@NonNull ImageCapture.OutputFileResults outputFileResults) { Uri savedUri = outputFileResults.getSavedUri(); if (savedUri == null) { Toast.makeText(Utama.this, "无法获取图片Uri", Toast.LENGTH_SHORT).show(); return; } // 在后台线程读取图片 getExecutor().execute(() -> { Bitmap bitmap = null; try (InputStream inputStream = getContentResolver().openInputStream(savedUri)) { bitmap = BitmapFactory.decodeStream(inputStream); } catch (IOException e) { e.printStackTrace(); runOnUiThread(() -> Toast.makeText(Utama.this, "读取图片失败: " + e.getMessage(), Toast.LENGTH_SHORT).show()); return; } // 切换到主线程更新ImageView runOnUiThread(() -> { if (bitmap != null) { // 替换成你布局中对应的ImageView实例 yourImageView.setImageBitmap(bitmap); } }); }); }
注意事项
- 替换代码中的
yourImageView为你实际使用的ImageView变量名 - 使用
try-with-resources自动关闭输入流,避免资源泄漏 - 保留异常处理逻辑,防止因读取失败导致应用崩溃
内容的提问来源于stack exchange,提问作者Arif Nur Rohman
相关产品推荐
相关产品推荐

