如何将PHLivePhoto保存到照片库?

时间:2017-05-27 23:16:37

标签: ios iphone swift phlivephoto

我是Swift的新手,我正在开发一个应用程序,从库中选择一张实时照片并将其显示在imageview上,直到该部分工作,但是imageview位于另一个具有自定义图像的imageview之上(像背景图片)。当我点击保存按钮时,它只存储具有自定义背景的图像视图。我使用以下代码将其存储在库中:

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

此代码当然是在保存按钮上。

我想要做的是让用户能够同时存储这两件事,例如:

我有一个带有星系图像背景的图像视图,在它上面我有一个显示实时照片的图像视图,所以我想将这两个东西存储到图书馆,当我在图书馆上查看它时,我会有一张带有星系背景的新实况照片。

我不知道是否有人会理解这个例子,但我认为这是我能描述问题的最好方法。

** 这是一个例子

enter image description here

1 个答案:

答案 0 :(得分:0)

您需要在selectedImage之上绘制backgroundImage,然后保存结果。

添加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
    }
}

并使用它

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

其中backgroundImage为自定义背景,userImage为从用户库中选择的实时照片。