在 Swift 中合并两个不同的图像

Ull*_*i H 3 merge uiimage ios swift

我想UIImage在 Swift 中合并两个:

在此处输入图片说明

在此处输入图片说明

我试过了

func maskImage(image: UIImage, withMask maskImage: UIImage) -> UIImage {

    let maskRef = maskImage.CGImage

    let mask = CGImageMaskCreate(
        CGImageGetWidth(maskRef),
        CGImageGetHeight(maskRef),
        CGImageGetBitsPerComponent(maskRef),
        CGImageGetBitsPerPixel(maskRef),
        CGImageGetBytesPerRow(maskRef),
        CGImageGetDataProvider(maskRef),
        nil,
        false)

    let masked = CGImageCreateWithMask(image.CGImage, mask)
    let maskedImage = UIImage(CGImage: masked!)

    // No need to release. Core Foundation objects are automatically memory managed.

    return maskedImage

}
Run Code Online (Sandbox Code Playgroud)

和电话

    let imageName = data.valueForKey("imagename")!.description
    let image = UIImage(named: imageName)
    let imageBackground : UIImage = UIImage(named:"background")!    
    let maskedImage: UIImage = self.maskImage(image!, withMask: imageBackground)

    cell.imageButton.setImage(maskedImage, forState: .Normal)
Run Code Online (Sandbox Code Playgroud)

结果只是我得到的图像,let image = UIImage(named: imageName)第二个图像(排球)

我的错误是什么?

bey*_*ulf 6

如果你不关心性能,你可以使用 Core Image

let volleyballImage = CIImage(image: UIImage(named:"volleyball.png")!)
let otherImage = CIImage(image: UIImage(named:"other.png")!)
let compositeFilter = CIFilter(name: "CIAdditionCompositing")!

compositeFilter.setValue(volleyballImage,
                         forKey: kCIInputImageKey)
compositeFilter.setValue(otherImage,
                         forKey: kCIInputBackgroundImageKey)

if let compositeImage = compositeFilter.outputImage{
    let image = UIImage(CIImage: compositeImage)
    // do something with the "merged" image
}
Run Code Online (Sandbox Code Playgroud)