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

(iphone)维护CGContextRef或CGLayerRef比UIImage占用更少的内存?,iphone,uiimage,cgcontext,Iphone,Uiimage,Cgcontext,我需要处理许多图像,但我无法将它们作为UIImage保存在内存中,因为它们太大了。 我还需要更改图像的颜色并动态合并它们。 从底层NSData创建UIImage,更改颜色,并在内存中不能有很多图像时将它们组合起来,这相当慢。(尽我所能) 我想也许我可以存储底层的CGLayerRef(用于将要组合的图像)和CGContextRef(生成的组合图像) 我是绘画界的新手,不确定CGLayerRef或CGContextRef的内存是否比UIImage本身小。 我最近听说w*h图像占用内存中的w*h*4字

我需要处理许多图像,但我无法将它们作为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  

位图几乎完全占用了图像的内存。无论您使用的是
UIImage
还是
cgimagerf
或其他什么,这都不会改变。位图仍在内存中。

啊,谢谢,因为我需要层中的layerContext(即位图)来在上面绘制一些东西,我想维护层对我的内存也没有帮助。我说的对吗?假设我理解正确,那是正确的。只要位图在内存中,您就会看到大致相同的内存使用情况。还有一个问题,我看到人们不创建图层的上下文,他们只是使用CGLayerCreateWithContext创建图层。这是否意味着层的上下文是自动创建的,即使创建的每个层上都没有绘制任何内容,也会占用大约相同的内存?参见我的层相关代码编辑我对CGLayer API不是特别熟悉,但我相信你是正确的,CGLayer创建了自己的上下文。我不知道它是否会占用你的记忆,但我不会感到惊讶。