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

如何将相机拍摄的图像上传到firebase存储?

董飞航
2023-03-14

我想将相机拍摄的图像上传到firebase存储。我知道如何存储图像,一旦我得到图像的Uri格式,但我从相机活动得到位图。所以我需要知道怎么做?

click_picture.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                startActivityForResult(intent,2);
            }
        });

 @Override
    public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        Bitmap bitmap = (Bitmap)data.getExtras().get("data");
        image.setImageBitmap(bitmap);
    }
public String getFileExtendsion(Uri uri){
        ContentResolver contentResolver = getActivity().getContentResolver();
        MimeTypeMap mime = MimeTypeMap.getSingleton();
        return  mime.getExtensionFromMimeType(contentResolver.getType(uri));
    }
public void uploadFile(){
        if(mImageUri!=null){
            final StorageReference fileReference = mStorageRef.child("ProfilePicture"+"."+getFileExtendsion(mImageUri));
            fileReference.putFile(mImageUri).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                @Override
                public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                    fileReference.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                        @Override
                        public void onSuccess(Uri uri) {
                            ///store the uri
                        }
                    });
                }
            }).addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Log.i("Fail",e.getMessage());
                }
            });
        }
    }

我使用函数uploadFile()将图像的Uri存储到firebase存储,然后获取图像的url以将其存储在firebase实时数据库中。但是我需要将位图转换为Uri吗?如果是,如何进行?我发现的代码不起作用,如果有其他方法,请告诉我
谢谢您的时间:)

共有1个答案

晋鹤轩
2023-03-14

如果要从摄像机获取位图,请参阅Firebase留档中的第一个示例,该示例显示了如何从内存中的数据上传,该示例方便地以Bitmap开头。

从那里:

// Get the data from an ImageView as bytes
imageView.setDrawingCacheEnabled(true);
imageView.buildDrawingCache();
Bitmap bitmap = ((BitmapDrawable) imageView.getDrawable()).getBitmap();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] data = baos.toByteArray();

UploadTask uploadTask = mountainsRef.putBytes(data);
 类似资料:
  • 我有一个按钮,它向用户提供选择,他是否想要从画廊或相机的图像。当用户从图库拍摄图像时,我能够成功地将图像上传到Firebase存储,但是当用户选择相机时,我无法将图像上传到存储。这是用户选择相机时的onActivityResult代码 它将图像上传到我的imageview,但给我错误提示 当我尝试上载到存储时 我在stack overflow上遇到了一个类似的问题。 我认为公认的答案是错误的,因为

  • 我需要存储从照相机到gallery再到firebase的图像。在我的项目上传从画廊工作,但当我试图从相机上传什么都没有发生。当您在“多媒体资料”或“照相机”之间选择“单击”按钮时。当从“多媒体资料”中拍照或选择“图像”时,在“图像视图”中我可以获得图像。然后我点击save,若图片来自gallery,则保存到存储器,并在数据库中创建子对象,但若图片来自camera,则无法工作。这个问题有解决办法吗?

  • 所以我遇到了一个问题,前面在我提问的问题中提到过:将图像(ACTION_image_CAPTURE)上载到Firebase存储 我对这个问题进行了更多的搜索,并应用了Android Studio文档:https://developer.android.com/training/camera/photobasics.html#TaskPhotoView 所以,在您阅读代码之前,我基本上想说一下需要什

  • 我有一个简单的ImageView,当我点击它时,相机出现并请求一张照片,你拍了照片,ImageView变成了照片,像这样的东西: 相机请求后,图片被加载到Imageviewer中,然后我尝试使用以下方式将其上载到Firebase: 那里有动物。getPictureID它只是以前给定的ID。现在的问题是,在putFile()处,它不断返回FileNotFoundException。 同时,如果您知道

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

  • 在我的应用程序中,用户从相机捕获图像或从图库中选择图像,然后将其转换为pdf并上载到服务器,现在我的问题是,从相机捕获的图像在某些设备上旋转,我有代码尝试解决此问题,但它不起作用 任何建议或问题在哪里,没有错误代码或任何东西