如何在路径中制作透明区域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()
}
在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()
}