Экспортировать CGPath в формате JPG или PNG

#iphone #cocoa-touch #quartz-graphics

#iPhone #cocoa-touch #quartz-графика

Вопрос:

Возможно ли нарисовать путь в UIView с помощью CGPath и экспортировать его в формате PNG?

Комментарии:

1. ДА. О, я полагаю, вы хотели код, не так ли?..

2. Нет, честно говоря, я просто хочу, чтобы указатель отображался лучше. Я не хочу рыбу, я хочу научиться ловить рыбу.

3. В любом случае, спасибо. «Да» — это что-то действительно большое. Вопрос о том, как это сделать, также важен, но просто знать, что это возможно, полезно.

Ответ №1:

Предполагая, что вам нужно UIImage, а не png-файл, вы можете сделать что-то вроде этого:

 UIGraphicsBeginImageContext(size); 
CGContextRef context = UIGraphicsGetCurrentContext();

CGContextSetRGBStrokeColor(context, 1.0, 0.0, 0.0, 1.0);
CGContextSetLineWidth(context, 2.0);
CGContextSetLineCap(context, kCGLineCapSquare);

//DRAW YOUR PATH HERE

CGContextStrokePath(context);

myUIImage = UIGraphicsGetImageFromCurrentImageContext();
[myUIImage retain];  

UIGraphicsEndImageContext();
  

Комментарии:

1. Однако это может привести к размытости изображений. UIGraphicsBeginImageContextWithOptions можно использовать с последним аргументом 0.0, чтобы избежать этого.

Ответ №2:

Самый простой способ сделать это — снова выполнить весь чертеж в контексте изображения, созданном UIGraphicsBeginImageContext() , извлечь UIImage из него, затем сохранить его с помощью UIImagePNG/JPEGRepresentation() функций.

Обратите внимание, что UIView не «удерживает» изображения. Вы можете повторно отобразить слой UIView, но это грубое нарушение MVC (вы используете views для хранения данных модели!), и мне это не кажется чистым.