苹果文档指出:
您应该避免创建大于 1024 x 的 UIImage 对象
大小为 1024。除了大量的内存之外,这样的图像还会
消耗,使用图像作为纹理时可能会遇到问题
在 OpenGL ES 中或将图像绘制到视图或图层时。这个尺寸
如果您正在执行基于代码的操作,则限制不适用
操作,例如调整大于 1024 x 1024 的图像大小
通过将其绘制到位图支持的图形上下文来获取像素。事实上,你
可能需要以这种方式调整图像大小(或将其分成几个
较小的图像)以便将其绘制到您的视图之一。
我认为这意味着如果我们正在处理非方形图像,我们应该将它们分成更小的图像?有没有这方面的具体文件或解释,或者有人有任何经验提示吗?
谢谢阅读。
在 A5 之前的 iOS 设备上,最大 OpenGL ES 纹理大小为 2048x2048(Apple 文档在这方面的说法是不正确的,称其为 1024x1024)。这意味着图像的任一维度都不能大于该图像。较新的 iOS 设备(iPhone 4S、iPad 2、iPad 3)的最大纹理尺寸为 4096x4096。
这并不意味着您必须拥有方形图像,只是图像的宽度或高度不得超过 2048(同样,在较新的设备上为 4096)。如果您尝试这样做,我相信您的图像只会呈现为黑色。
这曾经是所有不受 CATiledLayer 支持的 UIView 的限制,但我相信它们现在会自动平铺在足够大的视图上。如果您需要处理大于 2048x2048 的图像,则需要将其托管在 CATiledLayer 等中。
不过,内存警告值得关注。图像以未压缩的形式存储在内存中,无论其来源如何,因此您会看到每个 2048x2048 图像有 16,777,216 字节(对于 RGBA,每个像素 4 字节)。如果你不小心的话,这个数字会很快增加。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)