【发布时间】:2016-11-26 05:25:25
【问题描述】:
我正在尝试根据给定的UIBezierPath 剪裁UIImage,但生成的图像保留了原始形状和大小。我希望形状和大小类似于路径,即新图像的可见内容。
看看下面这个例子:
以下是我用来屏蔽给定路径的图像的代码:
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,你介意分享一个关于如何实现这个的快速代码sn-p吗?
-
不需要编码示例 Rob,我想通了。谢谢指点!
标签: ios swift uiimage uibezierpath uigraphicscontext