이미지 합성 Swift3







설명


UIGraphicsBeginImageContextWithOptions 에서 UIGraphicsEndImageContext() 중에서 이미지를 합성합니다. 이 중 draw() 함수를 사용하여 합성할 이미지를 사용합니다. 왜 draw() 함수를 사용하면 2장의 화상이 합성되는지 내용의 구조는 잘 모르겠지만, 어쨌든 아래와 같이 실장하는 것으로 2개의 화상은 합성됩니다. 합성된 이미지는 UIGraphicsGetImageFromCurrentImageContext() 에서 받을 수 있습니다.

구현



import UIKit

class ViewController: UIViewController {

    let imageView = UIImageView()

    override func viewDidLoad() {
        super.viewDidLoad()


        let topImage:UIImage = UIImage(named:"topImage")!
        let bottomImage:UIImage = UIImage(named: "bottomImage")!
        let newSize = CGSize(width:bottomImage.size.width, height:bottomImage.size.height)
        UIGraphicsBeginImageContextWithOptions(newSize, false, bottomImage.scale)
        bottomImage.draw(in: CGRect(x:0,y:0,width:newSize.width,height:newSize.height))
        topImage.draw(in: CGRect(x:0,y:0,width:newSize.width,height:newSize.height),blendMode:CGBlendMode.normal, alpha:1.0)
        let newImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()!
        UIGraphicsEndImageContext()




        let screenWidth:CGFloat = view.frame.size.width
        let screenHeight:CGFloat = view.frame.size.height
        imageView.image = newImage
        let newRect = CGRect(x:0, y:0, width:200, height:200)
        imageView.frame = newRect
        imageView.center = CGPoint(x:screenWidth/2, y:screenHeight/2)
        self.view.addSubview(imageView)

    }


    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}


출처



github

참고



merge two different images in Swift

don't think twice it's alright

좋은 웹페이지 즐겨찾기