Сохранение изображения поверх другого изображения в Swift
Я изучаю Swift, и я создаю приложение, которое использует личную фотографию и помещает другую поверх нее. Теперь у меня есть хакерское решение, чтобы создать скриншот области и сохранить его. Мне нужно сделать это в Swift
@IBAction func saveImage(sender: AnyObject) {
//Create the UIImage
UIGraphicsBeginImageContext(imageView.frame.size)
view.layer.renderInContext(UIGraphicsGetCurrentContext())
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
//Save it to the camera roll
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)
}
но это работало и больше не работает. Но, это тоже не лучшее решение.
Итак, ребята, как я могу сохранить изображение в рулон камеры из личного изображения с изображением в качестве наложения?
помощь была бы значительно ценю!! Спасибо!
3 ответов
Я бы рекомендовал читать через этой нить. Все ваши ответы здесь. После прочтения этой статьи следующий пример кода должен помочь вам правильно составить два изображения вместе.
func saveImage() {
let bottomImage = UIImage(named: "bottom")!
let topImage = UIImage(named: "top")!
let newSize = CGSizeMake(100, 100) // set this to what you need
UIGraphicsBeginImageContextWithOptions(newSize, false, 0.0)
bottomImage.drawInRect(CGRect(origin: CGPointZero, size: newSize))
topImage.drawInRect(CGRect(origin: CGPointZero, size: newSize))
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
}
надеюсь, это получает вас в правильном направлении.
обновлено до Swift 3.0:
func saveImage() {
let bottomImage = UIImage(named: "bottom")!
let topImage = UIImage(named: "top")!
let newSize = CGSizeMake(100, 100) // set this to what you need
UIGraphicsBeginImageContextWithOptions(newSize, false, 0.0)
bottomImage.draw(in: CGRect(origin: CGPointZero, size: newSize))//As drawInRect is deprecated
topImage.draw(at: CGRect(origin: CGPointZero, size: newSize))//As drawInRect is deprecated
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
}
ОБНОВЛЕНИЕ ДЛЯ SWIFT 4
func saveImage() {
let bottomImage = UIImage(named: "your bottom image name")!
let topImage = UIImage(named: "your top image name")!
let newSize = CGSize(width: 100, height: 100) // set this to what you need
UIGraphicsBeginImageContextWithOptions(newSize, false, 0.0)
bottomImage.draw(in: CGRect(origin: CGPoint.zero, size: newSize))
topImage.draw(in: CGRect(origin: CGPoint.zero, size: newSize))
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
}
чтобы использовать изображение, просто обратитесь к newImage
ПРИМЕР ИСПОЛЬЗОВАНИЯ ИЗОБРАЖЕНИЯ:
@IBOutlet weak var imageButton: UIButton!
imageButton.setBackgroundImage(newImage), for: .normal)
это редактирование ответ cnoon но оптимизирован для Swift 4.