如何在路径中制作透明区域uiimage

How to make transparent area uiimage in path

在iOS,
我有图了。
然后,我想在图像的特定路径中制作透明区域。
下图是一些图像。并且,心形区域是随机路径为透明区域。
我只有一张完整图片。
我想使图像的特定区域透明。它是 UIImage,而不是 UIImageView。所以,我不能使用掩码。


我尝试使用此解决方案,但心形区域充满了蓝色,不透明。 :(
文档是这样解释的。因为解决方案使用 imageContext(不是 window 或位图上下文),所以我不应该使用函数(CGContext.clear(_:)

If the provided context is a window or bitmap context, Core Graphics clears the rectangle. For other context types, Core Graphics fills the rectangle in a device-dependent manner. However, you should not use this function in contexts other than window or bitmap contexts.

您可以使用以下代码段。在这里,您将使用 api UIGraphicsBeginImageContextWithOptions(_:_:_:) 创建图像上下文,并将不透明参数指定为 false,这将使最终图像透明。

UIGraphicsBeginImageContextWithOptions(image.size, false, 0)
image.draw(at: .zero)
if let context = UIGraphicsGetCurrentContext() {
    context.addPath(bezierPath.cgPath)
    context.setBlendMode(.clear)
    context.setFillColor(UIColor.clear.cgColor)
    context.fillPath()

    let capturedImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
}