2011-01-13 62 views
0

我需要處理很多圖像,並且我無法將它們全部作爲UIImage存儲在內存中,因爲它們太大。
我還需要更改圖像的顏色並將它們動態合併。
從底層的NSData創建UIImage,改變顏色,並且當你在內存上沒有許多圖像的時候將它們合併起來相當慢。 (據我所知)(iPhone)維護CGContextRef或CGLayerRef佔用比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

圖像的內存使用幾乎完全佔用位圖。無論您使用UIImage還是CGImageRef或其他,都不會改變。位圖仍在內存中。

+0

啊謝謝,因爲我需要layerContext(這是位圖)來繪製一些東西,我想保持層不會幫助我,只要內存去。我對麼? – eugene 2011-01-13 09:01:47