我需要使用许多图像,并且我不能将它们全部作为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
答案 0 :(得分:0)
图像的内存使用几乎完全在位图中占用。无论您使用UIImage
还是CGImageRef
还是其他内容,都不会改变。位图仍在内存中。