[swift] 그래픽 이미지 포맷 변환

이미지 포맷 변환은 앱에서 자주 발생하는 작업 중 하나입니다. 다양한 이미지 형식으로 인코딩된 이미지를 다른 형식으로 변환해야 할 때도 있고, 특정 이미지를 더 작거나 크게 만들어야 할 때도 있습니다. 이번 글에서는 Swift를 사용하여 그래픽 이미지의 형식을 변환하는 방법에 대해 알아보겠습니다.

필요 라이브러리 설치

이미지 변환에는 UIImage 클래스와 Core Graphics 프레임워크를 사용할 것입니다.

import UIKit

이미지 포맷 변환

가장 일반적인 형식의 이미지 변환은 JPEG 형식에서 PNG 형식으로 변환하는 경우입니다. 아래 예제에서는 JPEG 이미지를 찾아 PNG로 변환하는 방법을 살펴봅니다.

func convertImageFormat(fromURL sourceURL: URL, toPNG destinationURL: URL) {
    if let image = UIImage(contentsOfFile: sourceURL.path) {
        if let pngData = image.pngData() {
            do {
                try pngData.write(to: destinationURL)
            } catch let error {
                print("Error converting image format: \(error.localizedDescription)")
            }
        }
    }
}

// 사용 예시
let sourceURL = URL(fileURLWithPath: "source.jpg")
let destinationURL = URL(fileURLWithPath: "destination.png")
convertImageFormat(fromURL: sourceURL, toPNG: destinationURL)

위의 코드는 UIImage 클래스의 pngData() 메소드를 사용하여 이미지를 PNG 데이터로 변환하고, 변환된 데이터를 파일로 쓰는 방법을 보여줍니다.

이미지 크기 변환

이미지의 크기를 조정하는 것도 자주 필요한 작업 중 하나입니다. 아래 예제는 이미지의 크기를 조절하는 방법을 보여줍니다.

func resizeImage(atURL sourceURL: URL, to targetSize: CGSize) -> UIImage? {
    if let image = UIImage(contentsOfFile: sourceURL.path) {
        let targetRect = CGRect(x: 0, y: 0, width: targetSize.width, height: targetSize.height)
        UIGraphicsBeginImageContextWithOptions(targetSize, false, 1.0)
        image.draw(in: targetRect)
        let newImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return newImage
    }
    return nil
}

// 사용 예시
let sourceURL = URL(fileURLWithPath: "image.jpg")
let targetSize = CGSize(width: 100, height: 100)
if let resizedImage = resizeImage(atURL: sourceURL, to: targetSize) {
    // 조절된 이미지를 사용
}

위의 코드는 이미지의 크기를 조절하기 위해 UIGraphicsBeginImageContextWithOptions, draw(in:), UIGraphicsGetImageFromCurrentImageContext, UIGraphicsEndImageContext와 같은 Core Graphics 메소드들을 사용합니다.

이제 당신도 이제 문제를 해결하기 위해 Swift를 사용하여 이미지의 포맷을 변환하고 크기를 조절하는 방법을 알게 되었을 것입니다. 적절한 시기에 이 기술을 사용하여 앱의 이미지 처리를 개선할 수 있을 것입니다.