swift - 在 Swift 2.0 中屏蔽图像

标签 swift swift2 uiimage ios9 core-graphics

我到处搜索并找到了一些关于如何屏蔽图像的示例,但它们似乎都不适合我......我在 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/

相关文章:

ios - phpass 在 swift 中散列类似的功能

ios - 如何连续调用以在 Swift 中下拉分页数据

xcode - Swift 2 以 NSException 类型的未捕获异常终止

ios - 存储在 CoreData 中的可转换图像 - 它可以与预置数据库一起使用吗?

ios - 将 UIImageView 添加到 subview

swift - 有没有更简单的方法以编程方式查看 UIImageView?

ios - Collection View 。 Item 之间的最大距离。 swift 3

ios - Swift - 将字典数组保存到 NSUserDefaults

xcode - 无法导入桥接头 swift 2

ios - 使用自定义委托(delegate)从 NSURLSessionUploadTask 获取服务器响应