当前位置: 首页 > 知识库问答 >
问题:

从摄像头拍摄的图像不会上载到firebase存储

吴城
2023-03-14

我有一个按钮,它向用户提供选择,他是否想要从画廊或相机的图像。当用户从图库拍摄图像时,我能够成功地将图像上传到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);
        }

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

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

当我尝试上载到存储时

我在stack overflow上遇到了一个类似的问题。

我认为公认的答案是错误的,因为如果我用

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

上面的代码只有当你从图库中获取图像时才是正确的。如果我使用上面的代码并拍摄相机图像,图像永远不会上传到我的图像视图,所以我无法将其推送到Firebase存储。请帮帮忙

共有1个答案

嵇丰
2023-03-14

单击相机按钮时,请使用以下代码:

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();
 类似资料:
  • 我有一个问题与我的代码,我必须上传图像到Firebase存储,我需要的图像来自画廊和相机,从画廊的图像是好的,但来自相机的图像给问题,图像加载在ImageView和被发送到数据库是黑色的。有人知道如何解决这个问题吗,或者你知道任何其他加载图像的方法吗? 来自画廊 从相机

  • 使用手机摄像头拍摄图像可以通过使用PhotoIntent然后上传拍摄的图像是成功的,我可以观察到Firebase存储中拍摄的图像,但我无法从Firebase存储加载图像,我只查看占位符,但从图库加载到图像视图并可见。可能是什么问题,我和photoIntent正在使用Picasso库从Firebase存储渲染此图像?如有任何帮助,我们将不胜感激。附加方法从Firebase实时数据库接收图像url,并

  • 我正在开发一个简单的博客应用程序,允许用户将照片从手机图库和描述上传到Firebase服务器。我正在尝试修改我的当前项目,以允许用户从照相机捕获照片并将其上载到firebase服务器。 目前,我能够将我捕获的图像显示到Image按钮中,但是我无法将我的图像发布到Firebase服务器(提交发布按钮不会对我的点击功能做出反应)。 我怀疑我的startPosting()函数中有错误,或者我没有正确编码

  • 我正在尝试用相机拍照并上传到Firebase。我使用AlertDialog询问用户是否想要使用相机或从图库中选择图像。我可以用相机拍照,但是当我试图上传图像时,它说找不到图像。 以下是我的图像选择方法: 下面是我上传图片的方法: 提前感谢任何帮助的朋友。

  • 拍摄图像或影像 安装PSP™专用的摄影机(选购品)后,可拍摄静止图像或影像。拍摄后的静止图像或影像会被保存至Memory Stick™或主机内存中。使用PSP™摄影机机能时,请遵守一般礼仪适切使用。 提示 拍摄的图像会被保存至Memory Stick™或主机内存中。 初期设定的保存位置为主机内存。若要变更为Memory Stick™,请在操作接口选择(设定)>[保存位置]。   准备 1. 将摄影

  • 我想将相机拍摄的图像上传到firebase存储。我知道如何存储图像,一旦我得到图像的Uri格式,但我从相机活动得到位图。所以我需要知道怎么做? 我使用函数uploadFile()将图像的Uri存储到firebase存储,然后获取图像的url以将其存储在firebase实时数据库中。但是我需要将位图转换为Uri吗?如果是,如何进行?我发现的代码不起作用,如果有其他方法,请告诉我 谢谢您的时间:)