Сохранение изображения поверх другого изображения в 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.