私は多くの画像で作業する必要があります。大きすぎるため、メモリ内のすべてをUIImageとして保持することはできません。
また、画像の色を変更して、その場でマージする必要があります。
メモリ上に多くのイメージを持たないときに、元のNSDataからUIImageを作成し、色を変更し、それらを結合するのはかなり遅いです。 (限り私が得ることができる)(iphone)は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
ああ、層の上に何かを描画するlayerContext(ビットマップ)が必要なので、レイヤーを維持するとメモリが消えてしまいます。私は正しいですか? – eugene
私があなたを正しく理解しているとすれば、それは正しいです。ビットマップがメモリ内にある限り、おおよそ同じメモリ使用量が表示されます。 –
もう1つ質問がありますが、レイヤのコンテキストを作成していない人は、CGLayerCreateWithContextでレイヤーを作成するだけです。これは、レイヤーのコンテキストが自動的に作成され、作成された各レイヤーについて何も描画されていない場合でも、同じメモリーを占有することを意味しますか? – eugene