在iPhone上加载大图像的最快方法是什么?

时间:2010-01-21 10:04:36

标签: iphone performance memory uiimage

我应该使用UIImage还是CGImage? Png还是Jpg? 我已经阅读了文档并尝试了不同的东西,但没有注意到显着的改进。 加载图像可能需要1秒钟才能看起来很慢

2 个答案:

答案 0 :(得分:5)

UIImage只是CGImage的ObjC包装器,因此它们是相同的。

从SDK doc:

  

您应该避免创建大小超过1024 x 1024的UIImage对象。除了这样的图像会占用大量内存之外,将图像用作纹理时可能会遇到问题在OpenGL ES中或将图像绘制到视图或图层时。如果您正在执行基于代码的操作,则此大小限制不适用,例如通过将大小超过1024 x 1024像素的图像绘制到位图支持的图形上下文来调整大小。实际上,您可能需要以这种方式调整图像大小(或将其分成几个较小的图像),以便将其绘制到您的一个视图中。

如果你有一个巨大的图像,你可以尝试使用UIWebView来减少内存消耗。


加载图像的时间有两部分:解压缩图像的时间(与选择JPG或PNG相关)和渲染图像的时间。

对于解压缩,我建议你描述简单的陈述

[UIImage imageWithContentsOfFile:@"/path/to/your/image.jpg"];

答案 1 :(得分:4)

iPhone 加载PNG的速度比JPG 因为PNG在应用程序中捆绑时进行了优化(尽管不是从远程加载)。

除了Addison Wesley的iPhone Cookbook:

“Xcode使用SDK附带的pngcrush实用程序自动优化您的PNG图像。(您将在/ Developer中的iPhoneOS平台文件夹中找到该程序。使用-iphoneswitch从命令行运行它以进行转换标准的PNG文件到iPhone格式的。)因此,请尽可能使用iPhone应用程序中的PNG图像作为首选图像格式。“

此外, PNG是无损格式 JPG是有损耗的。由于这些原因,Apple选择了这种格式。

-Kevin