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

Android Image Cropper调用相机后无法获取原始Bitmap,求解决方法

解决android-image-cropper相机源裁剪后获取原始图片的问题

当仅启用相机作为图片源时,调用result.getOriginalBitmap()返回null是因为库不会将相机拍摄的原始图片Bitmap直接缓存到内存中(避免大图片引发内存溢出),此时需要通过原始图片的Uri来加载Bitmap。

解决方案步骤:

  • 用result.getOriginalUri()获取原始图片的Uri,替代直接调用getOriginalBitmap()
  • 通过Uri自行加载Bitmap,加载时建议添加采样处理,避免内存溢出

修改后的代码示例:

ActivityResultLauncher<CropImageContractOptions> cropImage = registerForActivityResult(new CropImageContract(), result -> {
    if (result.isSuccessful()) {
        // 获取并加载裁剪后的图片
        croppedBitmap = BitmapFactory.decodeFile(result.getUriFilePath(getApplicationContext(), true));
        croppedImageView.setImageBitmap(croppedBitmap);

        // 获取原始图片Uri并加载Bitmap
        Uri originalUri = result.getOriginalUri();
        if (originalUri != null) {
            // 添加Bitmap采样逻辑,避免高分辨率图片导致OOM
            BitmapFactory.Options options = new BitmapFactory.Options();
            options.inSampleSize = 2; // 根据实际需求调整采样率
            try (InputStream is = getContentResolver().openInputStream(originalUri)) {
                originalBitmap = BitmapFactory.decodeStream(is, null, options);
                originalImageView.setImageBitmap(originalBitmap);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
});

private void launchCropImage() {
    CropImageOptions cropImageOptions = new CropImageOptions();
    cropImageOptions.imageSourceIncludeGallery = false;
    cropImageOptions.imageSourceIncludeCamera = true;
    CropImageContractOptions cropImageContractOptions = new CropImageContractOptions(null, cropImageOptions);
    cropImage.launch(cropImageContractOptions);
}

额外注意事项:

  1. 若应用目标SDK为33及以上,需申请READ_MEDIA_IMAGES权限(相机拍摄的临时文件通常在应用私有目录,大概率无需权限,但建议做好权限申请逻辑)
  2. 加载Bitmap时必须做采样处理,尤其是高分辨率相机拍摄的图片,直接加载极易引发内存溢出
  3. 若需要持久化原始图片,可通过Uri将文件复制到自定义目录

内容的提问来源于stack exchange,提问作者Shashi Ranjan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 20:52:50