Quartz 2D: как применить преобразование UIImageView к CGImage?

У меня есть UIImageView, который пользователь может вращать и изменять размер, касаясь экрана. Я хочу применить те же изменения, которые пользователь внес в UIImageView, к UIImage внутри него. Затем я буду использовать UIImage для маскировки другого изображения.

Пожалуйста, объясните мне, как правильно это делать?

Основная проблема заключается в том, что я не могу напрямую применить матрицу аффинного преобразования UIImageView к [UIImage CGImage], потому что они используют другую систему координат.


person Igon83    schedule 18.01.2011    source источник
comment
Возможно ли вообще преобразовать в CGImage напрямую? Если вы говорите о преобразовании его при рисовании в CGContext, посмотрите документацию на CGContextGetUserSpaceToDeviceSpaceTransform. Вы можете применить преобразование, возвращаемое этой функцией, к преобразованию UIImageView. Затем примените полученное комбинированное преобразование к контексту, в котором вы рисуете изображение.   -  person Alexei Sholik    schedule 08.04.2011


Ответы (1)


Вам необходимо предпринять следующие шаги:

  1. Создать новый графический контекст
  2. Примените преобразования из UIImageView к контексту
  3. Нарисуйте исходное изображение в контексте
  4. Извлечь новое изображение из контекста

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

См. Мой предыдущий пост: Создание UIImage из повернутого UIImageView

person Magic Bullet Dave    schedule 05.01.2012