Je crée une application iOS où l'utilisateur est censé pouvoir superposer une image à une autre. L'utilisateur peut choisir une image d'arrière-plan, qui serait stockée dans un UIImageView appelé imageView. L'utilisateur peut alors décider d'une image à recouvrir au-dessus de cette image, qui sera stockée dans une UIImageView appelée imageTwo. Ensuite, l'utilisateur est autorisé à déplacer et à redimensionner imageTwo. Cependant, je veux ensuite être en mesure de fusionner ces images en une seule image et de le télécharger.Fusion de deux UIImageViews de différentes tailles
Je suis actuellement en utilisant la fonction ci-dessous pour essayer de télécharger l'image:
@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()
}
Cependant, cela ne fonctionne pas très bien. Voici comment l'image regarde dans mon application: Image viewed from app
Cependant, quand je télécharger l'image en utilisant ma fonction d'en haut, l'image d'arrière-plan semble tendue et le topImage/oiseau est pas dans la bonne position: Downloaded image
Quelqu'un at-il des suggestions pour des moyens plus faciles d'accomplir cette tâche ou comment je devrais changer mon code d'en haut? J'ai lu quelqu'un ici suggéré de mettre les UIImageViews dans leur propre vue, mais cela s'est avéré être assez difficile aussi bien ...