我到处搜索并找到了一些关于如何屏蔽图像的示例,但它们似乎都不适合我......我在 iOS9 上运行并使用 Swift2.0
现在这就是我所拥有的:
class func maskImage(background: UIImage, withMask mask: UIImage) -> UIImage {
let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.PremultipliedLast.rawValue).rawValue
let colorSpace = CGColorSpaceCreateDeviceRGB()!
let context = CGBitmapContextCreate(nil, CGImageGetWidth(mask.CGImage), CGImageGetHeight(mask.CGImage), 8, 0, colorSpace, bitmapInfo)
CGContextDrawImage(context, CGRectMake(0, 0, mask.size.width * mask.scale, mask.size.height * mask.scale), mask.CGImage)
let maskRef: CGImageRef = CGBitmapContextCreateImage(context)!
let masked: CGImageRef = CGImageCreateWithMask(background.CGImage, maskRef)!
let icon: UIImage = UIImage(CGImage: masked, scale: mask.scale, orientation: mask.imageOrientation)
return icon
}
我传入两个 png 并收到错误:EXC_BAD_INSTRUCTION 在我初始化屏蔽的行上。我没有足够的代表来发布图像。
我可能遗漏了一些非常简单的东西,但希望得到你的帮助。谢谢!
最佳答案
在 Swift 3.0 中,我们进行了重大的名称更改.... 所以这似乎在一些重命名之后起作用......和清理...... 基于这个例子:(https://www.innofied.com/implementing-image-masking-in-ios/)
func maskImage(image:UIImage, mask:UIImage )->UIImage{
let imageReference = (image.cgImage)!
let maskReference = (mask.cgImage)!
let imageMask = CGImage.init(
maskWidth: maskReference.width
,height: maskReference.height
,bitsPerComponent: maskReference.bitsPerComponent
,bitsPerPixel: maskReference.bitsPerPixel
,bytesPerRow: maskReference.bytesPerRow
,provider: maskReference.dataProvider!
,decode: nil
,shouldInterpolate: true
)
return (UIImage(cgImage:(imageReference.masking(imageMask!))!))
}
关于swift - 在 Swift 2.0 中屏蔽图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32404018/