将图像从 imageview 上传到 Firebase Android

Posted

技术标签:

【中文标题】将图像从 imageview 上传到 Firebase Android【英文标题】:upload image from imageview to firebase Android 【发布时间】:2018-12-11 01:30:16 【问题描述】:

我在回收站视图中有一些图像的活动。我想将它们作为个人资料图片上传到 Firebase 存储中,但我不知道如何。 我有一个带有 2 个图像视图的活动:第一个从手机图库上传图像,第二个在下面打开此活动。我的想法是:点击一张图片,它会将点击的图片上传到firebase,完成后返回上一个活动,因为用户也需要选择昵称。

package it.evilsecret.evilsecretappfinal;

import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.net.Uri;
import android.provider.MediaStore;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.Toast;

import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.UploadTask;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

public class ImageSelection extends AppCompatActivity 

private static final int CHOOSE_IMAGE = 101;
ImageView imageView;
RecyclerView recyclerView;
ImageAdapter imageAdapter;
List<Image> imageList;
ProgressBar progressBar;

@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.imageselectionpopup);

    imageList = new ArrayList<>();
    recyclerView = findViewById(R.id.recycler_view);
    recyclerView.setLayoutManager(new GridLayoutManager(this, 3));

    imageList.add(
            new Image(R.drawable.alis, "Alis"));
    imageList.add(
            new Image(R.drawable.astaroth, "Astaroth"));
    imageList.add(
            new Image(R.drawable.chris, "Chris"));
    imageList.add(
            new Image(R.drawable.sarah, "Sarah"));
    imageList.add(
            new Image(R.drawable.vanessa, "Vanessa"));

    imageAdapter = new ImageAdapter(this, imageList);
    recyclerView.setAdapter(imageAdapter);

【问题讨论】:

How to save bitmap to Firebase的可能重复 【参考方案1】:

为此,您必须将图像转换为位图(convert image to bitmap),然后对其进行压缩。之后,您必须将其上传到 firebase cloud link to firebase cloud

【讨论】:

【参考方案2】:

先转换为位图...

Bitmap bitImage = BitmapFactory.decodeResource(getResources(), imageList.get(0));

然后压缩它以减小它的大小...

bitImage.compress(Bitmap.CompressFormat.PNG, 100, outputStream);

参考这个链接.. https://www.simplifiedcoding.net/firebase-storage-tutorial-android/

【讨论】:

以上是关于将图像从 imageview 上传到 Firebase Android的主要内容,如果未能解决你的问题,请参考以下文章

使用 AsyncTask 从 ImageView 上传带有字符串值的图像

从 Parse (Swift) 中检索图像到 imageView

将相机图像上传到 Firebase

Android imageview从缩放图像中获取像素颜色

将带有文本(已连接)的图像上传到 Firebase 存储

从活动中调用相机,捕获图像并上传到服务器