[swift] 이미지를 여러 장 합치기

이미지 처리는 iOS 앱 개발에서 중요한 요소 중 하나입니다. 때때로 여러 장의 이미지를 합쳐야 하는 경우가 있을 수 있으며, 이를 위해 Swift 언어를 사용하여 이미지를 합치는 방법을 알아보겠습니다.

이미지 합치기 준비하기

  1. 먼저, 이미지를 합치려는 이미지 파일들이 포함된 프로젝트를 생성하거나 기존 프로젝트를 열어주세요.

  2. Assets.xcassets 경로에서 이미지 파일을 추가하거나 UIImage 객체를 사용하여 이미지들을 로드할 수 있습니다.

이미지 합치기 코드 작성하기

다음은 Swift로 이미지를 합치는 코드 예시입니다.

import UIKit

func mergeImages(images: [UIImage]) -> UIImage? {
    let totalSize = CGSize(width: 800, height: 600) // 총 이미지 크기 설정

    UIGraphicsBeginImageContext(totalSize)

    var positionY: CGFloat = 0

    for image in images {
        let resizedImage = resizeImage(image: image, targetSize: CGSize(width: 800, height: 200))
        resizedImage.draw(at: CGPoint(x: 0, y: positionY))
        positionY += 200
    }

    let mergedImage = UIGraphicsGetImageFromCurrentImageContext()

    UIGraphicsEndImageContext()

    return mergedImage
}

func resizeImage(image: UIImage, targetSize: CGSize) -> UIImage {
    let size = image.size
    
    let widthRatio = targetSize.width / size.width
    let heightRatio = targetSize.height / size.height
    
    let newSize: CGSize
    if widthRatio > heightRatio {
        newSize = CGSize(width: size.width * heightRatio, height: size.height * heightRatio)
    } else {
        newSize = CGSize(width: size.width * widthRatio, height: size.height * widthRatio)
    }
    
    let rect = CGRect(origin: .zero, size: newSize)
    
    UIGraphicsBeginImageContextWithOptions(newSize, false, 1.0)
    
    image.draw(in: rect)
    
    let newImage = UIGraphicsGetImageFromCurrentImageContext()
    
    UIGraphicsEndImageContext()
    
    return newImage ?? image
}

위의 코드는 mergeImages 함수를 통해 이미지를 합치는 역할을 수행합니다. images 매개변수로 합칠 이미지들의 배열을 전달받으며, 합쳐진 이미지를 반환합니다.

resizeImage 함수는 이미지의 크기를 조정하는 역할을 수행합니다. targetSize 매개변수를 기준으로 이미지를 비율에 맞게 조정하며, 조정된 이미지를 반환합니다.

이미지 합치기 실행하기

이제 합칠 이미지 파일들을 준비하고, mergeImages 함수를 호출하여 이미지를 합칠 수 있습니다.

let image1 = UIImage(named: "image1")
let image2 = UIImage(named: "image2")
let image3 = UIImage(named: "image3")

let mergedImage = mergeImages(images: [image1, image2, image3])

위의 예제 코드는 image1, image2, image3 파일을 합치는 것을 보여주고 있습니다. mergeImages 함수를 호출하여 합쳐진 이미지를 받을 수 있습니다.

이제 이미지가 성공적으로 합쳐지고 나면, mergedImage 변수에 저장됩니다.

참고 자료