You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 09:34:55