Mrw*_*lfy 5 xcode image image-processing uiimage ios
苹果文档声明:
您应该避免创建大小超过1024 x 1024的UIImage对象.除了这样的图像会占用大量内存之外,在OpenGL ES中将图像用作纹理或将图像绘制到视图或图层时,可能会遇到问题.如果您正在执行基于代码的操作,则此大小限制不适用,例如通过将大小超过1024 x 1024像素的图像绘制到位图支持的图形上下文来调整大小.实际上,您可能需要以这种方式调整图像大小(或将其分成几个较小的图像),以便将其绘制到您的一个视图中.
我认为这意味着如果我们使用非方形图像,我们应该将它们分解成更小的图像?是否有任何具体的文件或解释,或者有任何经验提示吗?
谢谢阅读.
在A5之前的iOS设备上,最大的OpenGL ES纹理大小为2048x2048(Apple的文档在这方面不正确,称其为1024x1024).这意味着你不能拥有比任何一个维度更大的图像.较新的iOS设备(iPhone 4S,iPad 2,iPad 3)的最大纹理尺寸为4096x4096.
这并不意味着您必须拥有方形图像,只是图像的宽度或高度不得超过2048(在新设备上再次为4096).如果您尝试这样做,我相信您的图像将呈现为黑色.
这曾经是所有没有CATiledLayer支持的UIViews的限制,但我相信他们现在会自动对足够大的视图进行平铺.如果您需要使用大于2048x2048的图像,则需要将其托管在CATiledLayer等中.
但记忆警告值得关注.图像以未压缩的形式存储在内存中,无论其来源如何,因此您需要查看每2048x2048图像16,777,216个字节(RGBA每像素4个字节).如果你不小心,这可以很快加起来.