UIImages的图像大小,1024 x 1024?

苹果文档状态:

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

我认为这意味着如果我们正在处理非方形图像,我们应该把它们分解成更小的图像? 有没有关于这方面的具体文件或解释,或者是否有任何经验的任何提示?

谢谢阅读。

在A5之前的iOS设备上,最大的OpenGL ES纹理尺寸是2048×2048(苹果的文档在这方面是不正确的,因为它是1024×1024)。 这意味着你不能在任何一个维度都有比这更大的图像。 较新的iOS设备(iPhone 4S,iPad 2,iPad 3)最大纹理尺寸为4096×4096。

这并不意味着你必须有方形的图像,只是一个图像的宽度或高度不能超过2048(在新设备上再次是4096)。 如果你尝试这样做,我相信你的形象只会呈现为黑色。

这曾经是所有UIViews没有由CATiledLayer支持的限制,但我相信他们现在自动做足够大的视图平铺。 如果您需要使用大于2048×2048的图片,则需要将其托pipe在CATiledLayer等中。

但是,记忆警告值得关注。 图像以未压缩的forms存储在内存中,无论它们的来源如何,因此您需要查看每个2048×2048图像(RGBA每个像素4个字节)的16,777,216个字节。 如果你不小心,这可以很快加起来。