[swift] Swift에서 Core Image를 사용하여 이미지에 그림자 효과를 적용하는 방법은?

Core Image framework는 이미지 처리를 위한 강력한 도구를 제공합니다. 이미지에 그림자 효과를 적용하는 것은 Core Image의 CIFilter를 사용하여 간단하게 수행할 수 있습니다.

1. 이미지 가져오기

먼저, 이미지를 가져와야 합니다. 프로젝트에 이미지를 추가하고, 해당 이미지를 사용할 ViewController에 이미지를 가져온 후, 이미지 뷰에 표시합니다.

import UIKit

class ViewController: UIViewController {
    @IBOutlet weak var imageView: UIImageView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        if let image = UIImage(named: "yourImage") {
            imageView.image = image
        }
    }
}

2. CIFilter를 사용하여 그림자 효과 적용

Core Image의 CIFilter를 사용하여 그림자 효과를 적용합니다. CIFilter(name:)를 사용하여 "CIShadow" 필터를 생성하고, 필터의 속성을 설정합니다.

import CoreImage

func addShadowEffect(to image: UIImage) -> UIImage? {
    if let ciImage = CIImage(image: image) {
        let filter = CIFilter(name: "CIShadow")
        filter?.setDefaults()
        filter?.setValue(ciImage, forKey: kCIInputImageKey)
        filter?.setValue(5.0, forKey: "inputRadius")
        filter?.setValue(3.0, forKey: "inputOpacity")
        
        if let outputImage = filter?.outputImage {
            let context = CIContext(options: nil)
            if let cgImage = context.createCGImage(outputImage, from: outputImage.extent) {
                return UIImage(cgImage: cgImage)
            }
        }
    }
    return nil
}

// 이미지에 그림자 효과를 적용
if let originalImage = UIImage(named: "yourImage") {
    if let imageWithShadow = addShadowEffect(to: originalImage) {
        // 작업 완료된 이미지를 표시
    }
}

위 코드에서 inputRadiusinputOpacity 값을 조절하여 그림자 효과의 크기와 투명도를 조절할 수 있습니다.

이제 Swift에서 Core Image를 사용하여 이미지에 그림자 효과를 적용하는 방법을 익혔습니다. 여기서는 CIShadow 필터를 사용하였지만, Core Image에는 다양한 필터가 제공되므로 필요에 따라 다른 필터를 적용할 수도 있습니다.

Reference

Core Image Filter Reference