Есть ли лучший / более быстрый способ обработки изображений с камеры, чем Quartz 2D? - PullRequest
0 голосов
/ 30 марта 2011

В настоящее время я работаю над приложением для iphone, которое позволяет пользователю сделать снимок с помощью камеры и затем обработать его с помощью Quartz 2D.

С помощью Quartz 2D я преобразую контекст, чтобы изображение отображалось справильная ориентация (масштабировать и переводить, потому что он зеркальный), а затем я складываю кучу слоев с режимами наложения для обработки изображения.

Первоначальный (и конечный результат) снимок составляет 3 или 5 МП в зависимости от устройства изанимает много памяти после того, как нарисовано. Напоминание: это не jpeg в памяти, это растровые данные.

Мои слои имеют тот же размер, что и исходное изображение, поэтому каждый раз, когда я рисую новый слой поверх моей фотографии, мне нужнотекущее состояние изображения в памяти (A) + слой, чтобы смешать пространство памяти (B) + пространство в памяти, чтобы записать результат (C).

Когда я получаю результат, я рву "A" и "B ", переводит" C "на следующий этап обработки, где он становится новым" A "...

Мне нужно 4 прохода, как это, чтобы получить финальное изображение.

При разрешении этих снимков моё использование памяти может возрасти.Я могу видеть взгляд 14-14-15, и большую часть времени я получаю только предупреждения уровня 1, но иногда уровни 2 машут мне и убивают мое приложение.

  • Правильно ли я делаю это в отношении общегоprocess?
  • Есть ли способ ускорить обработку?
  • Почему предупреждения о памяти появляются случайным образом?
  • Почему второй процесс изображения длиннее первого, когда выможете видеть на этой картинке:

instruments screenshot

1 Ответ

0 голосов
/ 30 марта 2011

Потому что продолжительность выглядит примерно вдвое больше;Я бы сказал, что он делал вдвое больше обработки.Третья сделанная фотография занимает в три раза больше времени?

Если это так, это может указывать на то, что она обрабатывает все предыдущие сделанные фотографии / слои.Что, конечно, является ошибкой в ​​вашем коде.

...