我应该使用UIImage还是CGImage? Png还是Jpg? 我已经阅读了文档并尝试了不同的东西,但没有注意到显着的改进。 加载图像可能需要1秒钟才能看起来很慢
答案 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
除了Addison Wesley的iPhone Cookbook:
“Xcode使用SDK附带的pngcrush实用程序自动优化您的PNG图像。(您将在/ Developer中的iPhoneOS平台文件夹中找到该程序。使用-iphoneswitch从命令行运行它以进行转换标准的PNG文件到iPhone格式的。)因此,请尽可能使用iPhone应用程序中的PNG图像作为首选图像格式。“
此外, PNG是无损格式, JPG是有损耗的。由于这些原因,Apple选择了这种格式。
-Kevin