问题描述
是否可以选择使用CoreImage和func masking(_ mask: CGImage) -> CGImage?
之一从Core Graphics复制CIFilter
?我尝试过CIBlendWithMask
和CIBlendWithAlphaMask
都没有成功。最重要的是,我需要保留alpha通道,因此我希望以这种方式对图像进行遮罩,即如果遮罩为黑色->显示图像,如果遮罩为白色->透明。
我的遮罩代码:
extension UIImage {
func masked(by mask: UIImage) -> UIImage {
guard let maskRef = mask.cgImage,let selfRef = cgImage,let dataProvider = maskRef.dataProvider,let mask = CGImage(
maskWidth: maskRef.width,height: maskRef.height,bitsPerComponent: maskRef.bitsPerComponent,bitsPerPixel: maskRef.bitsPerPixel,bytesPerRow: maskRef.bytesPerRow,provider: dataProvider,decode: nil,shouldInterpolate: false),let masked = selfRef.masking(mask) else {
fatalError("couldnt create mask!")
}
let maskedImage = UIImage(cgImage: masked)
return maskedImage
}
}
解决方法
我找到了解决方案。关键是要使用具有灰度格式的图像,rgb等将不起作用。如果图像和mak大小相同,则可以取消调整大小步骤。做为扩展名,也可以做为CIImage的子类。享受:)
当然,您可以将其修改为Could not find org.springframework.boot:spring-boot-starter-web:.
Required by:
project :gps-web-service
Possible solution:
- Declare repository providing the artifact,see the documentation at https://docs.gradle.org/current/userguide/declaring_repositories.html
,UIImage
,CIImage
的扩展名。
CIFilter
,
您需要创建自己的自定义CIFilter。教程:
这不是微不足道的,但是当您学习如何做到这一点时,它就会有所回报:)