如何从Firebase存储中创建一系列图像?

时间:2017-06-02 07:31:08

标签: android image firebase firebase-realtime-database firebase-storage

我对小工具有了一个想法,当我点击小工具时,文本&图像将随机刷新。我用文本完成了这个,但是我的图像存储在Firebase上,我想拍摄这些随机图像并将它们显示在ImageView中。那么我该怎么做呢?

我的Firebase存储截图:

base

我的应用的屏幕截图:

app

2 个答案:

答案 0 :(得分:0)

要从Firebase存储中随机选择图像,您需要在某处获得文件的下载URL列表。如this answer中所述,目前没有Api可以获取这些图片的列表,因此您必须将它们的网址存储在某处。

这样做的一种可能性就是简单地添加网址 的文件到Firebase数据库。 如果要选择随机图像,可以浏览数据库, 并从此列表中选择一个随机网址。

要在ImageView中实际显示它们,您可以使用像Glide这样的库来简化此过程。 Firebase的FriendlyPix示例App显示了如何执行此操作。

答案 1 :(得分:0)

作为@ Bernd答案的替代方案:您可以使用增量编号将图像名称修改为标准命名方案。然后,您可以动态检索图像URL,如下所示:

Example image names:
image_0.jpg
image_1.jpg
image_2.jpg
image_3.jpg

生成随机图像文件路径的一些示例Java代码:

//The amount of images you have stored
int maxImages = 4; //Amount of images
Random random = new Random();
//Randomly generate a filepath to an image
String imageFilePath = "image_" + random.nextInt(maxImages) + ".jpg";

然后,您可以将生成的imageFilePath与FireBase Storage getDownloadUrl()一起使用,以检索正确的下载网址。然后,您可以将URL传递给Glide,Picasso或其他图像下载库,以将其加载到ImageView中。

<强>优点

  • 只需使用Firebase存储即可实现目标

  • 数据库开销减少,不必维护图像列表

<强>缺点

  • 您必须严格控制图像名称,不得使用自定义图像名称

  • 您必须拥有固定数量的图片

  • 如果删除图像而不更改其他图像名称,则可能会中断

  • 如果无法找到图像(例如,如果随机数超出范围),则检索网址会引发异常