Я пытаюсь скопировать UIImage
на основе заданного UIBezierPath
, но результирующее изображение сохраняет оригинальную форму и размер. Я хочу, чтобы форма и размер напоминали путь, т. Е. Видимое содержимое нового изображения.Clip UIImage to UIBezierPath (не маскировка)
Взгляните на этот следующий пример:
Ниже приведен код, я использую, чтобы скрыть изображение заданного пути:
func imageByApplyingClippingBezierPath(_ path: UIBezierPath) -> UIImage {
UIGraphicsBeginImageContextWithOptions(CGSize(
width: size.width,
height: size.height
), false, 0.0)
let context = UIGraphicsGetCurrentContext()!
context.saveGState()
path.addClip()
draw(in: CGRect(x: 0, y: 0, width: size.width, height: size.height))
let newImage = UIGraphicsGetImageFromCurrentImageContext()!
context.restoreGState()
UIGraphicsEndImageContext()
return newImage
}
Одним из решений было бы для посева изображение после маскировки, но в идеале я хочу, чтобы это было сделано как можно проще и эффективнее за один раз.
Любое решение/советы будут оценены.
Нет, просто перейдите и обрезайте его. Это довольно просто, хотя, один вызов 'CGImageCreateWithImageInRect'. – Rob
Спасибо за ваш комментарий @Rob, не могли бы вы поделиться быстрым фрагментом кода о том, как это реализовать? – Aleksander
Не нужно кодировать образец Роб, я понял это. Спасибо за указатель! – Aleksander