(iphone) сохранение CGContextRef или CGLayerRef занимает меньше памяти, чем UIImage? - PullRequest
0 голосов
/ 13 января 2011

Мне нужно работать со многими изображениями, и я не могу держать все их как UIImage в памяти, потому что они слишком велики.
Мне также нужно изменить цвета изображения и объединить их на лету.
Создание UIImage из базовых NSData, изменение цвета и объединение их, когда в памяти не может быть много изображений, выполняется довольно медленно.(насколько я могу получить)

Я подумал, что, возможно, я смогу сохранить базовый CGLayerRef (для изображения, которое будет объединено) и CGContextRef (полученное объединенное изображение).

Я новичок в мире рисования и не уверен, что CGLayerRef или CGContextRef меньше в памяти, чем сам UIImage.
Недавно я слышал, что изображение w * h занимает в памяти w * h * 4 байта.
CGLayerRef или CGContextRef также занимают столько памяти?

Спасибо

  • edit

Ниже приводится стратегия, о которой я думаюснизить потребление памяти и вычислительное время.

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 голосов
/ 13 января 2011

Использование памяти изображения почти полностью занято в растровом изображении.Используете ли вы UIImage или CGImageRef или что-то еще, это не изменится.Растровое изображение все еще находится в памяти.

...