如何显示尚未完全加载的图像的缩略图

时间:2013-06-19 14:03:01

标签: ios objective-c image networking

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

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

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

  1. 发件人将图片上传到应用服务器
  2. whatApp在服务器上创建img的迷你版本
  3. whatApp将img的mini版本发送到接收器,它快速显示为低分辨率img,同时将img的高分辨率版本上传到接收器
  4. 接收器获取高分辨率图像并查看它。
  5. 我要做的是创建发送到电子邮件客户端的所有附件的缩略图视图。我的应用程序没有服务器端方面(它是所有客户端)..所以我将无法复制上述过程(如果是whatsapp的情况)

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

    关于渐进式图像渲染/隔行扫描的这个post很有意思,但是它指示图像的创建者以特殊方式保存它,这对我没有帮助。

    任何想法?也许有一个图书馆通过网络电话选择性地从图像中提取信息?

2 个答案:

答案 0 :(得分:3)

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

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

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

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

答案 1 :(得分:1)

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

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

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

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

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

如果人物B在完整尺寸图像下载完成之前选择缩略图,我会用“加载...”文本代替图像。

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