2016-01-05 3 views
0

Есть ли стандартный способ обрезать кусок изображения (UIImage) на основе заданного пути (CGPath)? (Путь - это эллипс, звезда, многоугольник ...) Мой настоящий вопрос связан с этим: AVCaptureStillImageOutput area selection , который до сих пор остается без ответа и для которого у меня все еще нет решения.Обрезание изображения с заданным путем

+0

http://stackoverflow.com/q/22496029/4151918 –

+1

или, еще лучше, http://stackoverflow.com/a/8308955/1218876 –

ответ

0

Используйте этот код

CGPathRef path = CGPathCreateWithEllipseInRect(CGRectMake(50.0,50.0,300.0,200.0), nil); 

UIGraphicsBeginImageContext(self.view.bounds.size); 
CGContextSetStrokeColorWithColor(UIGraphicsGetCurrentContext(), [UIColor blackColor].CGColor); 
CGContextAddPath(UIGraphicsGetCurrentContext(), path); 
CGContextSetFillColorWithColor(UIGraphicsGetCurrentContext(), [UIColor redColor].CGColor); 
CGContextDrawPath(UIGraphicsGetCurrentContext(), kCGPathFillStroke); 
UIImage *maskImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

UIImage *originalImage = [UIImage imageNamed:@"image"]; 
UIGraphicsBeginImageContext(self.view.bounds.size); 
CGContextClipToMask(UIGraphicsGetCurrentContext(), CGRectMake(0.0,0.0,300.0,200.0), maskImage.CGImage); 
[captureImage drawAtPoint:CGPointZero]; 
UIImage *clippedImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
+0

Спасибо! Я пытаюсь использовать этот хороший код, хотя некоторые проблемы. Результирующее изображение ориентировано неверно и возникают проблемы масштабирования, при этом маска сжимается. Мне пришлось исправить несколько деталей, но я думаю, что основная идея хорошая, и я хотел бы заставить ее работать. – Michel

+0

Да, вы правы. Вы должны учитывать фактор ориентации и масштабирования. –

+0

Да, это кажется сложнее, чем я думал. Я более или менее решил обрезающий аспект, но у меня проблемы с сохранением различных клипов как PNG-файла так, как хотелось бы. На самом деле я даже сделал специальное приложение для тестирования этой стороны, с сообщением, чтобы обратиться за помощью: http://stackoverflow.com/questions/34646982/avcapturestillimageoutput-uiimagepngпредставление – Michel

Смежные вопросы