В настоящее время я работаю над приложением для iphone, которое позволяет пользователю сделать снимок с помощью камеры и затем обработать его с помощью Quartz 2D.
С помощью Quartz 2D я преобразую контекст, чтобы изображение отображалось справильная ориентация (масштабировать и переводить, потому что он зеркальный), а затем я складываю кучу слоев с режимами наложения для обработки изображения.
Первоначальный (и конечный результат) снимок составляет 3 или 5 МП в зависимости от устройства изанимает много памяти после того, как нарисовано. Напоминание: это не jpeg в памяти, это растровые данные.
Мои слои имеют тот же размер, что и исходное изображение, поэтому каждый раз, когда я рисую новый слой поверх моей фотографии, мне нужнотекущее состояние изображения в памяти (A) + слой, чтобы смешать пространство памяти (B) + пространство в памяти, чтобы записать результат (C).
Когда я получаю результат, я рву "A" и "B ", переводит" C "на следующий этап обработки, где он становится новым" A "...
Мне нужно 4 прохода, как это, чтобы получить финальное изображение.
При разрешении этих снимков моё использование памяти может возрасти.Я могу видеть взгляд 14-14-15, и большую часть времени я получаю только предупреждения уровня 1, но иногда уровни 2 машут мне и убивают мое приложение.
- Правильно ли я делаю это в отношении общегоprocess?
- Есть ли способ ускорить обработку?
- Почему предупреждения о памяти появляются случайным образом?
- Почему второй процесс изображения длиннее первого, когда выможете видеть на этой картинке: