从相机获取位图 android

Get bitmap from camera android

我正在尝试从我的应用程序打开相机并获取位图。但这不起作用。我收到此错误: E/BitmapFactory:无法解码流:java.io.FileNotFoundException:内容:/media/external/images/media/9969:打开失败:ENOENT(没有这样的文件或目录)

这是代码:

 private void openCamera()
{
    ContentValues contentValues = new ContentValues();
    contentValues.put(MediaStore.Images.Media.TITLE, "New Picture");
    contentValues.put(MediaStore.Images.Media.DESCRIPTION, "From the camera");
    image_uri =     getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);


    //Camera intent

    Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, image_uri);
    startActivityForResult(cameraIntent, IMAGE_CAPTURE_CODE);




}

当我调用 openCamera() 时,这里是 activity 结果:

 @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    super.onActivityResult(requestCode, resultCode, data);

    switch (resultCode)
            {
                case RESULT_OK :
                {

                    //imageView.setImageURI(image_uri); this works

                    Bitmap bitmap = null;
                    String photoPath = image_uri.toString();
                    bitmap = BitmapFactory.decodeFile(photoPath);

                    imageView.setImageBitmap(bitmap); //this doesnt work ! --> the bitmap is empty



                    }

                    //finish
                case RESULT_CANCELED :
                {
          //  finish();
        }
        default: {
            //finish();
        }
    }

之后我需要位图来存储图像。 这很奇怪,因为图像很好地保存在图库中,但我无法获取...

理想情况下,您将使用 Glide、Picasso 或其他图像加载库,只需让它将图像从 Uri 加载到您的 ImageView

如果您坚持使用您的基本方法,尽管它的性能很差,请替换:

String photoPath = image_uri.toString();
bitmap = BitmapFactory.decodeFile(photoPath);

与:

bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(image_uri));

Uri 不是文件。