我想知道,对于像 identicons 这样的事情,最好的方法是什么?和 gravatar但很快并将它们存储到 Firebase 中并指定为 profileImage。
我想出的另一件事是制作图像 url-s 数组,并在注册时随机选择一个 url 并存储它。可以做吗?
你们能指引我正确的方向吗?
最佳答案
我不建议您一次保存所有这些数据,尤其是当您最终拥有多张图片时。我会推荐以下之一
单个头像
只需将所有新手的头像分配给它即可。您甚至可以继续将其存储在您的应用程序中,这样就不需要 Firebase 调用或占用大量内存。
特征依赖
尝试根据用户的特定固定/事实特征分配头像。性是最可取的,因为它是二元的。 Facebook当用户没有添加个人资料图像时,使用相同的方法。如果您选择此方法,则真的不需要 Firebase。
动态
多个默认头像可用并开放以供进一步添加。我猜你对这个感兴趣。
- 用户选择
将您所有的头像都存储在 Firebase 中,让用户选择最吸引他们的头像。
由于您将来会添加更多头像,因此我建议您不要一次加载所有头像。对于内存优化,
- 查询前10个头像并呈现给用户
- 如果用户还没有选择头像,假设他们是已加载图像的 3/4,则查询另外 10 个头像。
这种方法对内存非常友好,不会让用户被这么多信息淹没。
- 随机选择
将您的头像存储在 Firebase 存储中,但还在您的 Firebase 数据库中包含一个节点,用于跟踪可用头像的数量。对于这种情况,我们称之为 total
.除此之外,我的头像节点中还有一个数字字符串到头像 url 映射。我的结构与此类似
{
"avatars":
{
"total":10,
"1":"https://www.google.com",
"2":"https://www.facebook.com",
"3":"https://www.youtube.com"
}
}
这引出了一个问题,我如何随机查询头像?
嗯哼..
- 查询 Firebase 以获取您当前拥有的头像数量
- 生成一个随机整数;说
x
遵守1<=x<=total
- 转换
x
到字符串;y = String(x)
- 查询 Firebase,其中
avatars.id == y
瞧,你有imageURL
- 从
imageURL
下载图像
这样做的缺点是用户无法控制,如果他们讨厌自己的头像,他们也无能为力。
好处是在任何给定时刻,您都不会加载内存中的所有图像。
关于swift - Firebase 中的随机个人资料图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40471260/