【问题标题】:How can I make array of image from Firebase storage?如何从 Firebase 存储中制作图像数组?
【发布时间】:2017-11-03 12:41:11
【问题描述】:

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

我的 Firebase 存储的屏幕截图:

我的应用截图:

【问题讨论】:

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


    【解决方案1】:

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

    一种可能性是简单地添加网址 的文件到 Firebase 数据库。 当您想选择随机图像时,您可以通过数据库, 并从此列表中选择一个随机网址。

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

    【讨论】:

      【解决方案2】:

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

      优势

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

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

      缺点

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

      • 你必须有固定数量的图片

      • 如果您在不更改其他图像名称的情况下删除图像可能会中断

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

      【讨论】:

      • 谢谢你的帮助......我会的
      猜你喜欢
      • 2017-03-08
      • 2019-12-15
      • 2022-08-13
      • 2017-08-13
      • 2017-09-16
      • 1970-01-01
      • 2019-01-23
      • 1970-01-01
      • 2020-09-07
      相关资源
      最近更新 更多