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