Ios 如何在Swift中生成由两个图像组成的合成图像?
我想创建一个新的UIImage,它是一个UIImage叠加在另一个UIImage上的组合。如何实现这一点?以下是一个可与Swift 4配合使用的版本:Ios 如何在Swift中生成由两个图像组成的合成图像?,ios,swift,uiimage,Ios,Swift,Uiimage,我想创建一个新的UIImage,它是一个UIImage叠加在另一个UIImage上的组合。如何实现这一点?以下是一个可与Swift 4配合使用的版本: // // Return composite image of image2 overlayed on image1 // func compositeImage(image1: UIImage, image2: UIImage) -> UIImage { var bounds1 = CGRectMake(0, 0, image1.
//
// Return composite image of image2 overlayed on image1
//
func compositeImage(image1: UIImage, image2: UIImage) -> UIImage {
var bounds1 = CGRectMake(0, 0, image1.size.width, image1.size.height)
var bounds2 = CGRectMake(0, 0, image2.size.width, image2.size.height)
var colorSpace = CGColorSpaceCreateDeviceRGB()
let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.PremultipliedFirst.rawValue)
var ctx = CGBitmapContextCreate(nil,
CGImageGetWidth(image1.CGImage),
CGImageGetHeight(image1.CGImage),
CGImageGetBitsPerComponent(image1.CGImage),
CGImageGetBytesPerRow(image1.CGImage),
CGImageGetColorSpace(image1.CGImage),
bitmapInfo)!
CGContextDrawImage(ctx, bounds1, image1.CGImage)
CGContextSetBlendMode(ctx, kCGBlendModeNormal) // one image over the other
CGContextDrawImage(ctx, bounds2, image2.CGImage)
return UIImage(CGImage: CGBitmapContextCreateImage(ctx))!
}
/**
Composite two or more image on top of one another to create a single image.
This function assume all images are same size.
- Parameters:
- images: An array of UIImages
- returns: A compsite image composed of the array of images passed in
*/
func compositeImages(images: [UIImage]) -> UIImage {
var compositeImage: UIImage!
if images.count > 0 {
// Get the size of the first image. This function assume all images are same size
let size: CGSize = CGSize(width: images[0].size.width, height: images[0].size.height)
UIGraphicsBeginImageContext(size)
for image in images {
let rect = CGRect(x: 0, y: 0, width: size.width, height: size.height)
image.draw(in: rect)
}
compositeImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
}
return compositeImage
}
如果我希望图像并排显示,而不是重叠显示,我如何修改上述内容?