【问题标题】:Image taken from camera won't upload to firebase storage从相机拍摄的图像不会上传到 Firebase 存储
【发布时间】:2018-03-14 15:57:16
【问题描述】:

我有一个按钮,用户可以选择是从画廊还是相机中获取图像。当用户从图库中获取图像时,我能够成功地将图像上传到 firebase 存储,但是当用户选择相机时,我无法将图像上传到存储。 这是用户选择相机时我的 onActivityResult 代码

if (requestCode == CAMERA_REQUEST && resultCode == Activity.RESULT_OK) {
            selectedImageUri =Uri.parse(data.getExtras().get("data").toString()) ;
            Bitmap photo = (Bitmap) data.getExtras().get("data");
            cameraImageButton.setImageBitmap(photo);
        }

它将图像上传到我的图像视图,但给我错误提示

No content provider: android.graphics.Bitmap@1b9dbf5f
                                                                                 java.io.FileNotFoundException: No content provider: android.graphics.Bitmap@1b9dbf5f

当我尝试上传到存储时

我已经通过similar question posted on stack overflow

我认为接受的答案是错误的,因为如果我使用

mImageUri = data.getData();
            mSelectImage.setImageURI(mImageUri);

上述代码仅在您从图库中获取图像时才正确。如果我使用上面的代码并拍摄相机图像,则图像永远不会上传到我的 imageview,因此我无法将其推送到 firebase 存储。请帮忙

【问题讨论】:

标签: android firebase firebase-storage


【解决方案1】:

当点击相机按钮时,使用以下代码:

int version = Build.VERSION.SDK_INT;

        String imgFileName = "image_name".jpg";
        File storageDir = Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_PICTURES);
        String pictureImagePath = storageDir.getAbsolutePath() + "/" + imgFileName;
        File file = new File(pictureImagePath);

        Uri outputFileUri;
        if(version < 24){

            outputFileUri = Uri.fromFile(file);
        } else {

            outputFileUri = FileProvider.getUriForFile(this, getApplicationContext().getPackageName() + ".provider",
                    file);
        }
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
        startActivityForResult(intent, 111);

在 onActivityResult 方法中使用以下代码:

String imgFileName = "image_name".jpg";
        File storageDir = Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_PICTURES);
        String pictureImagePath = storageDir.getAbsolutePath() + "/" + imgFileName;
        File imgFile = new  File(pictureImagePath);

        Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
        ByteArrayOutputStream bytes = new ByteArrayOutputStream();
        myBitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes);

        byte[] dataArray = bytes.toByteArray();

【讨论】:

  • 你在哪里定义了this.dataArray的dataArray?
  • 我忽略了该行,但图像没有被推送到 firebase
猜你喜欢
  • 1970-01-01
  • 2017-08-18
  • 2021-11-06
  • 2015-10-19
  • 2019-05-20
  • 2018-06-05
  • 2017-10-01
  • 1970-01-01
相关资源
最近更新 更多