2015-12-06 12 views
0

Я хочу создать приложение iOS быстро, чтобы сделать что-то вроде приложения для рисования, но я рисую и создаю мозаику на пути, где я двигал пальцем. У меня два образа: photoView и tempImageView. PhotoView загружает фотографию и tempImageView для рисования. Вот кодКак заполнить ничью с мозаикой в ​​приложении iOS?

func drawLineFrom(fromPoint: CGPoint, toPoint: CGPoint) { 

     UIGraphicsBeginImageContext(photoView.frame.size) 
     let context = UIGraphicsGetCurrentContext() 
     tempImageView.image?.drawInRect(CGRect(x: 0, y: 0, width: photoView.frame.size.width, height: photoView.frame.size.height)) 

     CGContextMoveToPoint(context, fromPoint.x, fromPoint.y) 
     CGContextAddLineToPoint(context, toPoint.x, toPoint.y) 

     CGContextSetLineCap(context, CGLineCap.Round) 
     CGContextSetLineWidth(context, brushWidth) 
     //next line will fill the line with black color but how to fill with mosaic? 
     CGContextSetRGBStrokeColor(context, 0, 0, 0, 1.0) 
     CGContextSetBlendMode(context, CGBlendMode.Normal) 

     CGContextStrokePath(context) 

     tempImageView.image = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 
    } 

И я знаю, следующий код можно добавить фильтр к фотографии, но как поставить его на пути или линии?

var filter = CIFilter(name: "CIPixellate") 
let inputImage = CIImage(image: originalImage) 
filter.setValue(inputImage, forKey: kCIInputImageKey) 
+0

Вы ищете что-то вроде этого: -http: //www.raywenderlich.com/87899/make-simple-drawing-app-uikit-swift –

+0

Да, но что-то большее. –

ответ

0

Вы можете нарисовать изображение маски в своем коде рисования и составном пиксельном изображении и исходном изображении с помощью маски. Но для хорошей производительности вы должны использовать общий контекст растрового изображения.
Если вы создаете CGImage из контекста растрового изображения, CGImage создает без копирования данные из контекста. CGBitmapContextCreateImage documentation.
Позже вы можете использовать фильтр CIBlendWithAlphaMask или CIBlendWithMask фильтр для получения изображения результата.

Я думаю, что это хороший метод, но в результате у вас будут обрезанные биты мозаики.