如何从 Firebase 存储中制作图像数组?

How can I make array of image from Firebase storage?

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

我的 Firebase 存储的屏幕截图:

我的应用截图:

要从 Firebase 存储中随机 select 一张图片,您需要在某处有一份下载 url 文件的列表。如 中所述,目前没有 Api 获取这些图片的列表,因此您必须将它们的 url 存储在某个地方。

一种可能性是简单地添加 urls 的文件到 Firebase 数据库。 当你想要 select 一张随机图片时,你可以通过数据库, 和 select 此列表中的随机 url。

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

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

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 存储的 getDownloadUrl() 来检索正确的下载 URL。然后,您可以将 URL 传递给 Glide、Picasso 或其他图像下载库,以将其加载到您的 ImageView 中。

优势

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

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

缺点

  • 你必须严格控制图像名称,不能自定义图像名称

  • 您必须有固定数量的图像

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

  • 如果找不到图像(例如,如果随机数超出范围),检索 URL 将抛出异常