下载和使用大量头像

Posted

技术标签:

【中文标题】下载和使用大量头像【英文标题】:Downloading and using a large number of avatars 【发布时间】:2016-09-23 08:14:28 【问题描述】:

我想知道您能否帮助我解决更多一般性的流程问题。

当用户注册时,我会在我的应用中创建一个缩略图头像(大约 35x35 像素)。我把它上传到服务器。

在我的应用程序的另一部分,我在 UITableView 中显示所有用户。此表由预先在视图控制器上发生的请求填充(因此我可以减少加载屏幕)。

此表包含大约 100 行。我的问题是,如何无缝加载所有头像?

我不希望用户点击视图并看到一堆用户,然后随机加载头像。 我不希望出现加载屏幕,除非绝对必要(即用户快速浏览应用程序)。 我不想一次向我的服务器发出 100 个请求。

我想发送一个请求,并可能一次将它们全部取回。如果我这样做了,是否有我应该使用的特定格式?带有 base64 编码缩略图的大型 JSON 响应? :/

除此之外,我应该缓存这些吗?如果有,怎么做?

斯威夫特 3.

谢谢!

【问题讨论】:

使用SDWebImage或AFImage,它只能下载那些出现在table view上的用户,然后你可以缓存它以备后用 【参考方案1】:

SDWebImage 是一个非常棒的框架,您可以使用它来完成这项任务。我在我的每个应用程序中都使用过它。

你可以在这里找到它:https://github.com/rs/SDWebImage

您可以将以下代码放入您的cellForRowAtIndexPath 方法中

cell.imageView.sd_setImageWithURL(String.initWithURL("http://www.domain.com/path/to/image.jpg"))

此处指定的 URL 是指向要在该特定行中显示的单个图像的链接。这样,您的应用程序可以在用户滚动 tableview 时加载图像。鉴于您的图像是 35x35,它应该是平滑和快速的。

希望这有帮助!

【讨论】:

【参考方案2】:

根据 Pratham Mehta 的回答进行更多研究后,我发现了一个名为 KingFisher 的库: https://github.com/onevcat/Kingfisher

这更适合我的项目,因为 SDWebImage 是用 Objective-C 编写的,而我的项目是用 Swift 3 编写的。

【讨论】:

【参考方案3】:

查看Nuke。它旨在支持大量图像(具有内置限制、请求速率限制等)。

如果我这样做了,我应该使用特定的格式吗?带有 base64 编码缩略图的大型 JSON 响应? :/

我建议避免任何过早的优化 - 只要图像一出现在显示器上就懒惰地下载它们。大多数图像加载框架都旨在很好地支持这一点。

另外你可以prefetch图片。

如果您想以艰难的方式做到这一点 - 只需压缩图像并下载存档。

除此之外,我应该缓存这些吗?如果有,怎么做?

您可能会发现this 很有帮助。

【讨论】:

以上是关于下载和使用大量头像的主要内容,如果未能解决你的问题,请参考以下文章

在安卓系统里微信怎么设置头像

WordPress基础:Gravatar头像修正

简单的网络爬虫,下载GitHub的头像

完美实现类似QQ的自拍头像上传头像功能!(Demo 源码)

安卓的微信怎么设置头像

油管怎么换头像