【问题标题】:How do I get the Bitmap of the photo taken by calling Intent(MediaStore.ACTION_IMAGE_CAPTURE)?如何通过调用 Intent(MediaStore.ACTION_IMAGE_CAPTURE) 获取照片的位图?
【发布时间】:2018-09-27 00:43:56
【问题描述】:

首先我创建了唯一的文件路径来使用日期存储照片:

File file = new File(Environment.getExternalStoragePublicDirectory( 
  Environment.DIRECTORY_DCIM),"raspberry");
String dateString = new SimpleDateFormat("MM/dd/yyyy_HH:mm:ss").format(new Date());
filePath=new File(file,"SideBySide4_"+dateString+".jpg");

我使用我在清单和 xml 中定义的 FileProvider 从 filePath 生成了一个 uri:

mUri = FileProvider.getUriForFile(this,
            BuildConfig.APPLICATION_ID + ".provider",
            filePath);
mCurrentPhotoPath = "file:" + filePath.getAbsolutePath();//for getting Bitmap in onActivityResult()

然后,我启动相机 Intent 并为其提供 Uri 来存储拍摄的照片:

Intent takePictureIntent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, mUri);
startActivityForResult(takePictureIntent,REQUEST_TAKE_PHOTO);

然后在onActivityResult(),我尝试获取Bitmap:

Uri imageUri=Uri.parse(mCurrentPhotoPath);
            File file=new File(imageUri.getPath());
            try{
                InputStream ims=new FileInputStream(file);
                photoBitmap=BitmapFactory.decodeStream(ims);
            }catch(FileNotFoundException e){
                return;
            }

但 photoBitmap 为空

【问题讨论】:

    标签: android


    【解决方案1】:

    解决方案:

    你可以这样做:

    在你的onActivityResult()中,点击一张图片后,你会得到data中的数据所以:

    Bitmap picture = (Bitmap) data.getExtras().get("data");
    

    可以使用。

    希望有用。

    【讨论】:

      猜你喜欢
      • 2016-12-18
      • 1970-01-01
      • 2011-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多