无法在Firebase存储中的ImageView中显示图像

时间:2016-07-03 14:30:23

标签: android firebase firebase-storage

我有一个应用程序,允许用户将图像上传到Firebase存储桶,然后我获取图像文件的下载URL并将其添加到firebase数据库。该URL的格式为: - {{1} }

然后我尝试使用Glide将图像加载到RecyclerView中,但我无法这样做而且无法显示图像。

如何获得一个以.png或.jpeg等结尾的绝对图片网址,可以很容易地用来加载图片。据我所知,问题在于网址

2 个答案:

答案 0 :(得分:2)

从相机中获取图像

                    Intent i = new Intent(Intent.ACTION_PICK,MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                    startActivityForResult(i, 3);

获取图像的文件路径

 @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == PICK_FILE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {

      String  path=String.valueOf(data.getData());
      file = Uri.fromFile(new File(path));

创建文件元数据

  metadata = new StorageMetadata.Builder()
    .setContentType("image/jpeg")
    .build();

将文件和元数据上传到路径' images / avator.jpg'

  uploadTask = storageRef.child("images/"+file.getLastPathSegment()).putFile(file, metadata);

监听状态更改,错误和上传完成情况。

  uploadTask.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
    double progress = (100.0 * taskSnapshot.getBytesTransferred()) / taskSnapshot.getTotalByteCount();
    System.out.println("Upload is " + progress + "% done");
}
}).addOnPausedListener(new OnPausedListener<UploadTask.TaskSnapshot>() {
@Override
public void onPaused(UploadTask.TaskSnapshot taskSnapshot) {
    System.out.println("Upload is paused");
}
}).addOnFailureListener(new OnFailureListener() {
 @Override
public void onFailure(@NonNull Exception exception) {
    // Handle unsuccessful uploads
}
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
    // Handle successful uploads on complete
    Uri downloadUrl = taskSnapshot.getMetadata().getDownloadUrl();

}

});

使用Glide Library加载图像

  Glide.with(getActivity())
.load(new File(downloadUrl)) // Uri of the picture
.into(Imageview);

答案 1 :(得分:0)

使用Picasso,您可以使用以下方式加载简单图像:

Picasso.with(Activity.this).load("your url image").into(imageView);

需要添加Glade:

 compile 'com.squareup.picasso:picasso:2.5.2'