快速合并两个不同的图像

我面临以下问题:我必须合并两个图像A和B,以创build一个新的图像C作为合并的结果。 第一个图像(A)是我用的第二个(B)的一个.png和一个相框。 我怎样才能把这两个图像合并成一个新的(C),它和第一个(A)的尺寸是一样的?

我试过这个代码:

var bottomImage: UIImage = polaroidFoto.image! var image: UIImage = immaginePropria.image! var newSize: CGSize = CGSizeMake(300, 300) UIGraphicsBeginImageContext(newSize) bottomImage.drawInRect(CGRectMake(0, 0, newSize.width, newSize.height)) image.drawInRect(CGRectMake(0, 0, newSize.width, newSize.height), blendMode: kCGBlendModeNormal, alpha: 0.8) //0.8 default var newImage: UIImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() 

但是,这一个返回给我一个新的形象(C),但与阿尔法效果,我想图像(A)留在图像(B),并将这两个合并成一个新的(C)! 谢谢!

更新有人可以尝试更正此代码:

 func maskImage(image: UIImage, withMask maskImage: UIImage) -> UIImage { var colorSpace: CGColorSpaceRef = CGColorSpaceCreateDeviceRGB() var maskImageRef: CGImageRef = maskImage.CGImage() var mainViewContentContext: CGContextRef = CGBitmapContextCreate(Nil, maskImage.size.width, maskImage.size.height, 8, 0, colorSpace, kCGImageAlphaPremultipliedFirst) CGColorSpaceRelease(colorSpace) if mainViewContentContext == nil { return nil } var ratio: CGFloat = 0 ratio = maskImage.size.width / image.size.width if ratio * image.size.height < maskImage.size.height { ratio = maskImage.size.height / image.size.height } var rect1: CGRect = 00maskImage.size.widthmaskImage.size.height var rect2: CGRect = -((image.size.width * ratio) - maskImage.size.width) / 2-((image.size.height * ratio) - maskImage.size.height) / 2image.size.width * ratioimage.size.height * ratio CGContextClipToMask(mainViewContentContext, rect1, maskImageRef) CGContextDrawImage(mainViewContentContext, rect2, image.CGImage) var newImage: CGImageRef = CGBitmapContextCreateImage(mainViewContentContext) CGContextRelease(mainViewContentContext) var theImage: UIImage = UIImage.imageWithCGImage(newImage) CGImageRelease(newImage) return theImage } 

这一个可能是有用的,但语法是充满了错误! 谢谢!

尝试以下代码可以帮助你。

  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 } 

然后打电话给任何你想要的如下:

 var imageA : UIImage = UIImage(named:"YourImageName")! var imageB : UIImage = UIImage(named:"YourImageName")! var maskedImage: UIImage = self.maskImage(imageA, withMask: imageB)