Как я могу сохранить PHLivePhoto в библиотеку фотографий?

Я новичок в Swift и разрабатываю приложение, которое выбирает живую фотографию из библиотеки и отображает ее в виде изображения, пока эта часть не будет работать, но вид изображения находится поверх другого изображения, имеющего пользовательское изображение (например, фон). образ). К тому моменту, когда я нажимаю кнопку "Сохранить", он сохраняет только изображение с пользовательским фоном. Я использую следующий код для хранения его в библиотеке:

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

Этот код, конечно же, находится на кнопке сохранения.

я хочу дать пользователю возможность хранить обе вещи одновременно, например:

У меня есть просмотр изображений с изображением галактики в качестве фона, и поверх него у меня есть просмотр изображений, показывающий живое фото, поэтому я хочу сохранить обе вещи в библиотеке, и когда я проверю это в библиотеке, у меня будет новый прямой эфир фото на фоне галактики.

Я не знаю, поймет ли кто-нибудь пример, но думаю, что это лучшее, что я могу сделать, чтобы описать проблему.

** это пример

введите описание изображения здесь

1 ответ

Вам нужно нарисовать 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 это живая фотография, выбранная из пользовательской библиотеки.

Другие вопросы по тегам