2017-04-19 53 views
0

我正在制作一个iOS应用程序,用户应该能够将一个图像叠加在另一个上。用户可以选择一个背景图像,它将存储在名为imageView的UIImageView中。然后,用户可以决定将图像叠加在该图像的顶部,该图像将存储在名为imageTwo的UIImageView中。然后,允许用户移动并调整图像的大小。但是,我希望能够将这些图像视图合并为一个图像并下载它。合并两个不同大小的UIImageViews

我目前使用了以下功能来尝试下载图片:

@IBAction func downloadImage(_ sender: Any) { 
let bottomImage:UIImage = imageView.image! 
let topImage:UIImage = imageTwo.image! 

let mySize = CGSize(width: (imageView.frame.size.width), height:(imageView.frame.size.height)) 

UIGraphicsBeginImageContextWithOptions(mySize, false, 1) 
bottomImage.draw(in: CGRect(x: 0,y:0,width: mySize.width,height: mySize.height)) 
topImage.draw(in: CGRect(x: imageTwo.frame.origin.x ,y: imageTwo.frame.origin.y , width: (imageTwo.frame.size.width),height:(imageTwo.frame.size.height)), blendMode:CGBlendMode.normal, alpha:1.0) 
let newImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()! 
UIImageWriteToSavedPhotosAlbum(newImage, nil,nil,nil) 
UIGraphicsEndImageContext() 
} 

但是,它并不能很好地工作。 这是图像的样子在我的应用程序: Image viewed from app

然而,当我用我的功能,从上面下载的图像,背景图像看起来拉长和topImage /鸟是不是在正确的位置:Downloaded image

任何人有任何建议更容易的方法来完成这项任务,或者我应该如何从上面更改我的代码?我在这里读过一个人建议把UIImageView放到他们自己的视图中,但事实证明这也是非常棘手的...

回答

0

问题是你合成的图像视图与你的图像视图不同实际上由你的图像显示。您可以应用必要的变换,以便图像与图像视图中显示的内容相匹配,或者您可以偷懒并捕获屏幕上的图像snapshotView(afterScreenUpdates:)

相关问题