[swift] Swift에서 이미지 다운로드 및 저장하기

이미지 다운로드 및 저장은 Swift 프로그래밍에서 자주 사용되는 작업 중 하나입니다. 이미지를 다운로드하여 로컬 저장소에 저장하는 방법을 알아보겠습니다.

1. URL로부터 이미지 다운로드하기

import UIKit

func downloadImage(from url: URL, completion: @escaping (UIImage?) -> Void) {
    URLSession.shared.dataTask(with: url) { data, response, error in
        guard let data = data, error == nil else {
            completion(nil)
            return
        }
        
        let image = UIImage(data: data)
        completion(image)
    }.resume()
}

위의 코드는 downloadImage 함수를 정의하고, URL을 입력으로 받아 해당 URL에서 이미지를 다운로드합니다. 다운로드가 완료되면 completion 클로저를 호출하여 다운로드 된 이미지를 반환합니다.

2. 다운로드 된 이미지 저장하기

func saveImage(_ image: UIImage, withName name: String) {
    guard let data = image.jpegData(compressionQuality: 1.0) ?? image.pngData() else {
        return
    }
    
    let fileURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.appendingPathComponent(name)
    
    do {
        try data.write(to: fileURL)
        print("Image saved at \(fileURL?.path ?? "")")
    } catch {
        print(error.localizedDescription)
    }
}

위의 코드는 saveImage 함수를 정의하고, 다운로드 된 이미지를 로컬 저장소에 저장합니다. 이미지는 JPEG 또는 PNG 형식으로 저장됩니다. 저장된 이미지의 파일 경로는 출력되며, 저장 중 오류가 발생하면 해당 오류를 출력합니다.

3. 사용 예시

let imageURL = URL(string: "https://example.com/image.jpg")!
        
downloadImage(from: imageURL) { image in
    guard let image = image else {
        return
    }
    
    saveImage(image, withName: "myImage.jpg")
}

위의 코드는 imageURL에서 이미지를 다운로드한 다음 myImage.jpg라는 이름으로 저장하는 예시입니다.

결론

Swift에서 이미지를 다운로드하고 저장하는 방법을 알아보았습니다. 위의 코드를 사용하여 손쉽게 이미지를 다운로드하고 로컬 저장소에 저장할 수 있습니다.