Firebase存储和Android图像

时间:2017-05-07 01:20:18

标签: android firebase firebase-storage android-glide

所以我想基本上从Firebase存储中获取图像(我将规则设置为public)。

这就是我所拥有的

    ImageView image = (ImageView)findViewById(R.id.imageView);
    Glide.with(this)
    .load("https://firebasestorage.googleapis.com/v0/b/test-7c916.appspot.com/o/images.jpg?alt=media&token=b207cb11-9ad5-48e3-86ac-1dcb07ee6013")
    .into(image);

而不是使用https链接。我想使用存储参考。但每次我尝试使用存储参考我的应用程序崩溃。 请帮忙。

与.child()方法类似。

3 个答案:

答案 0 :(得分:3)

您需要使用StorageReference加载Firebase存储图片。

   // Reference to an image file in Cloud Storage
StorageReference storageReference = = FirebaseStorage.getInstance().getReference().child("myimage");


ImageView image = (ImageView)findViewById(R.id.imageView);

// Load the image using Glide
Glide.with(this /* context */)
        .using(new FirebaseImageLoader())
        .load(storageReference)
        .into(image );

有关详情,请查看Using FirebaseUI to download and display images

答案 1 :(得分:0)

所以使用像这样的pRaNaY代码

    StorageReference storageReference = FirebaseStorage.getInstance().getReference().child("images.jpg");
    ImageView image = (ImageView)findViewById(R.id.imageView);
    Glide.with(this).using(new FirebaseImageLoader()).load(storageReference).into(image );

我之所以要使用引用是因为我将在txt文件中包含所有图像的名称,我将从中读取图像的名称并创建一个while循环以将所需的所有图像加载到右侧的地方。

还有一个问题,如何在不检查ImageView是否为null的情况下知道图像是否为空?

答案 2 :(得分:0)

将此类FirebaseImageLoader.java放到您的源代码中,或者自己编写。

在应用程序源中的任何地方进行授课,如下所示。

@GlideModule
public class MyAppGlideModule extends AppGlideModule {

@Override
public void registerComponents(Context context, Glide glide, Registry registry) {
    // Register FirebaseImageLoader to handle StorageReference
    registry.append(StorageReference.class, InputStream.class,
            new FirebaseImageLoader.Factory());
    }
}

要在其中加载图像coad的地方,如下所示。

StorageReference storageReference = FirebaseStorage
                                    .getInstance().getReference().child("myimage");

Glide.with(getApplicationContext())
      .load(completeStorageRefranceToImage)
      .into(imageView);

Please refer for more details.