UIImages的图像大小,1024 x 1024?

时间:2012-08-20 02:35:54

标签: ios xcode image image-processing uiimage

苹果文档声明:

  

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

我认为这意味着如果我们使用非方形图像,我们应该将它们分解成更小的图像?是否有任何具体的文件或解释,或者有任何经验提示吗?

感谢阅读。

1 个答案:

答案 0 :(得分:7)

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

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

这曾经是所有没有CATiledLayer支持的UIViews的限制,但我相信他们现在会自动对足够大的视图进行平铺。如果您需要处理大于2048x2048的图像,则需要将其托管在CATiledLayer等中。

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