(iphone)维护CGContextRef或CGLayerRef比UIImage占用更少的内存?

时间:2011-01-13 08:50:19

标签: iphone uiimage cgcontext

我需要使用许多图像,并且我不能将它们全部作为UIImage存储在内存中,因为它们太大了。
我还需要改变图像的颜色并在运行中合并它们 从底层NSData创建UIImage,改变颜色,并在内存中没有很多图像时将它们组合起来相当慢。 (据我所知)

我想也许我可以存储底层的CGLayerRef(用于将要合并的图像)和CGContextRef(得到的组合图像)。

我是绘图世界的新手,不确定CGLayerRef或CGContextRef的内存是否小于UIImage本身。
我最近听说w * h图像在内存中占用了w * h * 4字节 CGLayerRef或CGContextRef也会占用那么多内存吗?

谢谢

  • 修改

以下是我正在考虑降低内存使用量和计算时间的策略。

CGLayerRef layer = CGLayerCreateWithContext(self.bitmapContext, self.frame.size, NULL);
CGContextRef layerContext = CGLayerGetContext(layer);  
CGContextDrawImage(layerContext, self.bounds, image.CGImage);  
store 'layer' somewhere.  
possibly destroy layerContext  

1 个答案:

答案 0 :(得分:0)

图像的内存使用几乎完全在位图中占用。无论您使用UIImage还是CGImageRef还是其他内容,都不会改变。位图仍在内存中。