如何从服务器下载大图像50 MB并在具有内存管理的iphone应用程序中显示?

时间:2012-09-19 20:27:48

标签: iphone memory-management

我在申请时遇到了记忆问题 在我的应用程序中,我将下载50 MB图像并显示到我的iphone应用程序中 请建议一个没有管理内存的示例和正确的步骤。

2 个答案:

答案 0 :(得分:1)

这绝对应该在服务器上完成,正如已经建议的那样。

如果您无法在服务器端执行此操作,则下载小图像和大图像之间应该没有区别 只需使用NSURLConnection(或其他异步方法)下载数据,从数据创建图像并将其设置为图像视图。

我建议显示某种动画甚至进度,因为下载它并将数据转换为图像可能需要很长时间。
也许你最好在下载之后根据你的需要调整它以便更好地进一步提高性能。

确保在使用对象后立即释放所有内存 一般来说,我认为iOS应用程序可以处理50 MB图像大小...

答案 1 :(得分:0)

将其缩放到实际呈现的尺寸和质量(最大值)。这种扩展/转换应该自然发生在服务器端。

请注意,ios设备的最大可显示像素数目前为3145728(iPad 3rd Gen - Retina)。使用每像素3位和无压缩,对于像素数最多的设备,小于10 MB

当然,您应该使用压缩(有损或无损)可以最大限度地减少下载大小/次数。压缩文件后得到的大小将根据信号的复杂程度和用于压缩的算法而变化 - 期望输入的一小部分。

你还应该考虑以多种尺寸存储源文件,这样非视网膜ipod或iphone(内存比第三代ipad少)不需要下载和处理比设备能力大几倍的文件提出。