苹果文件声明:
您应该避免创建大小大于1024x1024的UIImage对象。除了这样的图像所消耗的大量内存外,当您将图像用作OpenGL ES中的纹理或将图像绘制到视图或层时,可能会遇到问题。如果您正在执行基于代码的操作,例如通过将大于1024x1024像素的图像绘制到位图背景的图形上下文,则此大小限制不适用。实际上,您可能需要以这种方式调整图像的大小(或将其分解为几个较小的图像),以便将其绘制到视图之一。
我想这意味着,如果我们在处理非方形图像,我们应该把它们分解成更小的图像?是否有任何具体的文件或解释,或有人有任何经验提示?
感谢您的阅读。
发布于 2012-08-20 17:06:03
在A5前的iOS设备上,OpenGL ES的最大纹理大小是2048x2048 (苹果的文档在这方面是错误的,因为它是1024x1024)。这意味着你不能有一个比这两个维度更大的图像。较新的iOS设备(iPhone 4S、iPad 2、iPad 3)的最大纹理大小为4096x4096。
这并不意味着你必须有正方形图像,只是图像的宽度和高度不能超过2048 (同样,在更新的设备上是4096 )。如果你试图这样做,我相信你的形象将只是渲染为黑色。
这曾经是对所有没有UIViews支持的CATiledLayer的限制,但我相信他们现在会自动对足够大的视图进行平铺。如果您需要处理大于2048x2048的映像,则需要将其宿主在CATiledLayer或类似的文件中。
不过,这些记忆提醒是值得注意的。图像以未压缩的形式存储在内存中,无论它们的源是什么,所以您将看到每2048x2048图像中有16,777,216字节(RGBA为每像素4字节)。如果你不小心的话,那就能很快地加起来。
https://stackoverflow.com/questions/12031704
复制相似问题