iOS 개발을 하다 보면 사진을 처리해야 할 때가 많습니다. Swift 언어를 사용하여 간단하게 사진 처리를 할 수 있는 방법을 알아보겠습니다.
1. UIImagePickerController를 사용한 사진 선택
먼저, 사용자가 갤러리에서 사진을 선택할 수 있도록 UIImagePickerController를 사용해보겠습니다.
import UIKit
class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
@IBOutlet weak var imageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func selectPhotoButtonPressed(_ sender: UIButton) {
let imagePickerController = UIImagePickerController()
imagePickerController.delegate = self
imagePickerController.sourceType = .photoLibrary
present(imagePickerController, animated: true, completion: nil)
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
imageView.image = image
}
dismiss(animated: true, completion: nil)
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
dismiss(animated: true, completion: nil)
}
}
위의 코드는 UIImagePickerController를 사용하여 사용자로부터 갤러리에서 사진을 선택하는 기능을 구현한 것입니다. selectPhotoButtonPressed
에서 이미지 선택을 위한 UIImagePickerController를 present 하고, imagePickerController(_:didFinishPickingMediaWithInfo:)
메서드에서 선택한 이미지를 이미지 뷰에 표시합니다.
2. 이미지 필터 적용
선택한 이미지에 필터를 적용해보겠습니다. 이를 위해서는 Core Image 프레임워크를 사용해야 합니다.
import CoreImage
class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
// ...
func applyFilterButtonPressed(_ sender: UIButton) {
if let selectedImage = imageView.image {
let context = CIContext()
if let filter = CIFilter(name: "CIColorMonochrome") {
filter.setValue(CIImage(image: selectedImage), forKey: kCIInputImageKey)
filter.setValue(CIColor(red: 0.5, green: 0.5, blue: 0.5), forKey: kCIInputColorKey)
filter.setValue(1.0, forKey: kCIInputIntensityKey)
if let outputImage = filter.outputImage {
if let cgImage = context.createCGImage(outputImage, from: outputImage.extent) {
let processedImage = UIImage(cgImage: cgImage)
imageView.image = processedImage
}
}
}
}
}
// ...
}
위의 코드에서 applyFilterButtonPressed
메서드는 선택한 이미지에 필터를 적용하는 기능을 구현한 것입니다. CIColorMonochrome
필터를 사용하여 이미지를 흑백으로 변환하고, CIColor(red: 0.5, green: 0.5, blue: 0.5)
를 사용하여 회색으로 설정하였습니다. 결과 이미지는 processedImage
에 저장되며, 이를 이미지 뷰에 표시합니다.
3. 이미지 저장
마지막으로, 수정된 이미지를 저장해보겠습니다.
import Photos
class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
// ...
func saveImageButtonPressed(_ sender: UIButton) {
if let processedImage = imageView.image {
UIImageWriteToSavedPhotosAlbum(processedImage, nil, nil, nil)
}
}
// ...
}
위의 코드에서 saveImageButtonPressed
메서드는 수정된 이미지를 포토 라이브러리에 저장하는 기능을 구현한 것입니다. UIImageWriteToSavedPhotosAlbum
함수를 사용하여 이미지를 저장합니다.
결론
이렇게 Swift를 사용하여 사진 처리를 할 수 있습니다. UIImagePickerController를 통해 이미지를 선택하고, Core Image를 사용하여 필터를 적용하며, 저장할 수 있습니다.
더 자세한 내용은 아래의 참고 자료를 참고하시기 바랍니다.