[swift] Swift에서 카메라 롤 및 앨범에 사진 저장하기

iOS 앱을 개발할 때 사용자가 촬영한 사진을 기기의 카메라 롤이나 앨범에 저장해야 하는 경우가 있습니다. Swift에서는 간단한 코드 몇 줄만으로 이 작업을 수행할 수 있습니다. 이번 글에서는 Swift를 사용하여 카메라로 사진을 찍거나 앨범에서 사진을 선택한 후 해당 사진을 저장하는 방법을 알아보겠습니다.

카메라로부터 사진 촬영 및 저장

카메라 기능을 사용하기 위한 허가 요청

먼저, 카메라를 사용하기 위해 Info.plist 파일에 카메라 접근을 위한 권한을 요청해야 합니다.

<key>NSCameraUsageDescription</key>
<string>카메라 접근 권한이 필요합니다.</string>

위와 같이 Info.plist 파일에 항목을 추가하여 카메라 접근에 대한 설명을 포함시킵니다.

카메라 기능을 사용하여 사진 촬영

다음으로, 카메라로부터 사진을 촬영하고 저장하는 방법을 살펴봅시다.

import UIKit

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
    let imagePicker = UIImagePickerController()

    override func viewDidLoad() {
        super.viewDidLoad()
        imagePicker.delegate = self
        imagePicker.sourceType = .camera
    }

    @IBAction func takePhoto(_ sender: Any) {
        present(imagePicker, animated: true, completion: nil)
    }

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        if let image = info[.originalImage] as? UIImage {
            UIImageWriteToSavedPhotosAlbum(image, self, nil, nil)
        }
        dismiss(animated: true, completion: nil)
    }
}

위의 코드는 카메라로부터 사진을 촬영하고, 촬영된 사진을 사용자 기기의 카메라 롤에 저장합니다. UIImagePickerController 클래스를 사용하여 카메라 기능을 구현하고, UIImageWriteToSavedPhotosAlbum 함수를 사용하여 사진을 저장합니다.

앨범에서 사진 선택 및 저장

앨범 접근 허가 요청

앨범에서 사진을 선택하고 저장하기 위해서도 먼저 Info.plist 파일에 앨범 접근을 위한 권한을 요청해야 합니다.

<key>NSPhotoLibraryUsageDescription</key>
<string>앨범 접근 권한이 필요합니다.</string>

앨범에서 사진 선택 및 저장

앨범에서 사진을 선택하고 해당 사진을 저장하는 방법은 다음과 같습니다.

import UIKit

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
    let imagePicker = UIImagePickerController()

    override func viewDidLoad() {
        super.viewDidLoad()
        imagePicker.delegate = self
        imagePicker.sourceType = .photoLibrary
    }

    @IBAction func choosePhoto(_ sender: Any) {
        present(imagePicker, animated: true, completion: nil)
    }

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        if let image = info[.originalImage] as? UIImage {
            UIImageWriteToSavedPhotosAlbum(image, self, nil, nil)
        }
        dismiss(animated: true, completion: nil)
    }
}

이 코드는 앨범에서 사진을 선택하고, 선택한 사진을 사용자 기기의 카메라 롤에 저장합니다.

요약

Swift를 사용하여 iOS 앱에서 카메라로부터 사진을 촬영하거나 앨범에서 사진을 선택한 후 해당 사진을 저장하는 방법을 살펴보았습니다. 기기의 카메라를 이용하여 사진을 찍거나 앨범에서 사진을 선택하는 기능은 많은 앱에서 사용되므로, 위의 코드들은 매우 유용하게 사용될 수 있습니다.

참고자료: Apple Developer Documentation