2

我想知道如何在客户端显示尚未从远程服务器完全下载的图像的缩略图。

例如,如果您将图像发送给WhatsApp联系人.. 该联系人将(几乎立即)看到低分辨率图像的缩略图,并且它将开始下载图片,直到您看到完整的分辨率图像。

现在一种可能的情况是,此过程分为 4 个步骤:

  1. 发件人将图像上传到什么应用服务器
  2. whatApp 在服务器上创建一个迷你版的 img
  3. whatApp 将迷你版img 发送给receiver,快速显示为低分辨率img,同时将高分辨率img 上传给receiver
  4. 接收器获取高分辨率图像并查看它。

我要做的是创建发送到电子邮件客户端的所有附件的缩略图视图。我的应用程序没有服务器端方面(它都是客户端)..所以我将无法复制上述过程(如果是 whatsapp 的情况)

做进一步的研究,three20实现了图像的缩略图视图.. 这个库的问题是您为缩略图视图实例化的每个图像都必须指定一个缩略图 URL,这也不同于完整大小的 URL(参见@interface MockPhoto here例如)..所以这也是一个死胡同..

这篇关于渐进式图像渲染/隔行扫描的帖子很有趣,但它指示图像的创建者以一种特殊的方式保存它,这对我没有帮助。

有任何想法吗?也许有一个库可以通过网络调用选择性地从图像中获取信息?

4

2 回答 2

3

JPEG(可选)具有缩略图(在标题中)。但是,如果您无法控制图像的保存方式,那么您就无法使用它,或者如您所提到的,渐进式 JPEG 图像。此外,使用 IMAP 和 POP,您将无法访问单个附件。

如果这些图像存储在服务器端,那么您可以使用服务器端图像库生成缩略图。

但是,如果这是一个客户端电子邮件应用程序,您无法控制服务器,那么您就很不走运了。在下载邮件附件之前,您将无法执行任何操作。唯一的例外是,如果电子邮件服务器具有某种可以绑定的 API(或具有自定义 IMAP 扩展)。

POP 和 IMAP 协议没有内置任何缩略图功能。也许 Outlook 邮件服务器有什么东西?

于 2013-06-19T14:23:02.530 回答
1

你已经用你分解它的方式回答了你自己的问题。我的一个应用程序中有一个非常相似的结构。我写了类似 iMessage/WhatsApp 的东西(用于教育目的)。

1) 人 A 将图像发送到服务器。

2) 服务器从图像创建缩略图。

3) 人 B 首先下载(在后台)几乎是瞬间的缩略图,因为它只有几个 K 大小。

4) 下载缩略图后,将下载完整大小的图像(在后台)。

如果人 B 在完整大小的图像完成下载之前选择了缩略图,我有一个“正在加载...”文本来代替图像。

但是...除非您有充分的理由自动下载完整图像,否则我建议您仅在用户想要查看完整图像时才开始下载它。为什么要把带宽浪费在用户可能或不想看到的东西上。还记得尽可能使用压缩。

于 2013-06-19T14:38:07.937 回答