我正在制作一个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放到他们自己的视图中,但事实证明这也是非常棘手的...