2017-05-27 1 views
0

Je suis nouveau dans Swift et je développe une application qui choisit une photo en direct de la bibliothèque et l'affiche sur une imageview, jusqu'à ce que cela fonctionne, mais l'imageview est au-dessus d'une autre imageview qui a une image personnalisée (comme une image de fond). Au moment où j'appuie sur le bouton de sauvegarde, il ne stocke que l'affichage de l'image avec l'arrière-plan personnalisé. J'utilise le code suivant pour le stocker sur la bibliothèque:Comment enregistrer une PHLivePhoto dans une photothèque?

let imageData = UIImagePNGRepresentation(myView.image!) 
let compressedImage = UIImage(data: imageData!) 
UIImageWriteToSavedPhotosAlbum(compressedImage!, nil, nil, nil) 

Ce code est bien sûr sur le bouton de sauvegarde.

ce que je veux faire est de donner à l'utilisateur que la capacité de stocker les deux choses en même temps, comme par exemple:

J'ai un imageview avec une image d'une galaxie en arrière-plan et sur le dessus de celui-ci J'ai une vue d'image affichant une photo vivante, ainsi je veux stocker les deux choses à la bibliothèque et quand je la vérifie sur la bibliothèque j'aurai une nouvelle photo en direct avec un fond d'une galaxie.

Je ne sais pas si quelqu'un comprendra l'exemple, mais je pense que c'est le mieux que je puisse faire pour décrire le problème.

** c'est l'exemple

enter image description here

Répondre

0

Vous devez dessiner la selectedImage au-dessus de la backgroundImage et sauvegarder le résultat.

Ajouter cette extension de UIImage

extension UIImage { 
    func saveImage(withImage image: UIImage) -> UIImage? { 
     // create image 
     UIGraphicsBeginImageContext(size) 
     draw(in: CGRect(x: 0, y: 0, width: size.width, height: size.height)) 
     let centeredFrame = CGRect(x: (size.width - image.size.width)/2, y: (size.height - image.size.height)/2, width: image.size.width, height: image.size.height) 
     image.draw(in: centeredFrame) 
     let result = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 
     return result 
    } 
} 

et de l'utiliser

if let newImage = backgroundImage.saveImage(withImage: userImage), let imageData = UIImagePNGRepresentation(newImage), let compressedImage = UIImage(data: imageData) { 
    UIImageWriteToSavedPhotosAlbum(compressedImage, nil, nil, nil) 
} 

backgroundImage est la coutume et fond userImage est photo en direct sélectionnée de la bibliothèque utilisateur.

+0

Merci d'avoir répondu! J'ai quelques problèmes en essayant d'ajouter ce code à mon code :( –

+0

quel est le problème? –

+0

Je suppose que je dois changer le "backgroundImage" à ce que c'est le morceau de code qui fait référence à mon arrière-plan droit? La chose est que je le change et il semble ne pas avoir un membre pour "taille" –