iOS: выделение непрозрачных частей частично прозрачного изображения

У меня есть приложение, которое требует, чтобы сплошной черный контур был нарисован вокруг частично прозрачного UIImage . Не вокруг рамки изображения, а вокруг всех непрозрачных частей самого изображения. То есть подумайте о прозрачном PNG с непрозрачным белым «X» на нем - мне нужно обвести «X» черным.

Чтобы усложнить задачу, ПОСЛЕ того, как контур нарисован, непрозрачность исходного изображения будет скорректирована, но контур должен оставаться непрозрачным, поэтому создаваемый мной контур должен включать только контур, а не исходное изображение.

Моя текущая техника такова:

  • Создайте новый UIView , который имеет размеры исходного изображения.
  • Дублируйте UIImage 4 раза и добавьте дубликаты в качестве подвидов UIView , при этом каждый UIImage смещен по диагонали от исходного местоположения на пару пикселей.
  • Превратите этот UIView в изображение (с помощью типичного метода UIGraphicsGetImageFromCurrentImageContext ).
  • Используя CGImageMaskCreate и CGImageCreateWithMask , вычтите исходное изображение из этого нового изображения, чтобы остался только контур.

Это работает. Даже с четырьмя офсетными изображениями результат выглядит неплохо. Однако это ужасно неэффективно и вызывает хорошую 4-секундную задержку на iPhone 4.

Так что мне нужен хороший, быстрый и эффективный способ добиться того же, который полностью поддерживается iOS 4.0.

Есть отличные идеи? :)

7
задан iHunter 8 February 2012 в 22:48
поделиться