Есть ли стандартный способ обрезать кусок изображения (UIImage) на основе заданного пути (CGPath)? (Путь - это эллипс, звезда, многоугольник ...) Мой настоящий вопрос связан с этим: AVCaptureStillImageOutput area selection , который до сих пор остается без ответа и для которого у меня все еще нет решения.Обрезание изображения с заданным путем
ответ
Используйте этот код
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();
Спасибо! Я пытаюсь использовать этот хороший код, хотя некоторые проблемы. Результирующее изображение ориентировано неверно и возникают проблемы масштабирования, при этом маска сжимается. Мне пришлось исправить несколько деталей, но я думаю, что основная идея хорошая, и я хотел бы заставить ее работать. – Michel
Да, вы правы. Вы должны учитывать фактор ориентации и масштабирования. –
Да, это кажется сложнее, чем я думал. Я более или менее решил обрезающий аспект, но у меня проблемы с сохранением различных клипов как PNG-файла так, как хотелось бы. На самом деле я даже сделал специальное приложение для тестирования этой стороны, с сообщением, чтобы обратиться за помощью: http://stackoverflow.com/questions/34646982/avcapturestillimageoutput-uiimagepngпредставление – Michel
- 1. Обрезание пробелов с изображения
- 2. Получить файл с заданным путем
- 3. Sketchup API Получить ширину и высоту изображения с заданным путем
- 4. Обрезание изображения крупнее
- 5. Сохранить файл в GridFS с заданным путем
- 6. Почему LoadLibrary не работает с заданным путем?
- 7. Javascript - Обрезание изображения по диагонали
- 8. Обрезание отзывчивого изображения полной ширины
- 9. Обрезание необходимой части изображения с помощью CSS
- 10. Обрезание изображения с помощью OpenCV и C
- 11. Обрезание изображения с помощью пользовательского UIBezierPath
- 12. Автоматическое обрезание отзывчивого фонового изображения
- 13. CSS Круговое обрезание прямоугольного изображения
- 14. Обрезание изображения многоугольника из jpeg изображения Java
- 15. Caffe - Увеличение изображения путем обрезки
- 16. Прочитать содержимое файла jar с заданным конкретным путем
- 17. Рекурсивная функция для управления заданным путем
- 18. Интеллектуальное обрезание изображений
- 19. Обрезание фонового изображения в scrollview в android
- 20. обрезание до границ с UIViewContentModeScaleAspectFill
- 21. Обрезание изображения в приложении Windows Store
- 22. Обрезание изображений
- 23. Обрезание фонового изображения стола при использовании nowrap
- 24. Base64 для изображения с заданным форматом
- 25. Как найти узел в дереве с заданным путем
- 26. получить все дочерние родительские папки с заданным путем в java
- 27. Обрезание или центрирование изображения в Swift
- 28. Принудительное обрезание изображения для обертывания содержимого
- 29. Обрезание любого изображения до 4: 3
- 30. Обрезание изображения до его загрузки на сервер
http://stackoverflow.com/q/22496029/4151918 –
или, еще лучше, http://stackoverflow.com/a/8308955/1218876 –