【发布时间】:2017-04-19 23:55:52
【问题描述】:
我正在制作一个 iOS 应用程序,用户应该能够将一个图像覆盖在另一个图像上。用户可以选择一个背景图像,该图像将存储在一个名为 imageView 的 UIImageView 中。然后,用户可以决定要覆盖在该图像之上的图像,该图像将存储在名为 imageTwo 的 UIImageView 中。然后,允许用户移动和调整 imageTwo 的大小。但是,我希望能够将这些图像视图合并到一个图像中并下载它。
我目前正在使用以下功能尝试下载图片:
@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/bird 不在正确的位置:Downloaded image
对于完成此任务的更简单方法或我应该如何从上面更改我的代码,有人有任何建议吗?我在这里读到有人建议将 UIImageViews 放入他们自己的视图中,但事实证明这也很棘手......
【问题讨论】:
标签: ios swift merge uiimageview uigraphicscontext