[swift] 이미지의 명암비 조정하기

이미지의 명암비(Contrast)를 조정하는 것은 이미지 프로세싱 작업 중에서 중요한 부분입니다. 명암비를 적절하게 조절하면 이미지가 더 선명해지고 더 잘 보이게 됩니다. 이번 글에서는 Swift를 사용하여 이미지의 명암비를 조정하는 방법에 대해 알아보겠습니다.

Step 1: 이미지 로드하기

첫째로, 이미지를 로드해야 합니다. 이를 위해 UIImage 클래스의 인스턴스를 생성하는 방법을 사용하겠습니다.

guard let image = UIImage(named: "image_name") else {
    return
}

guard 문을 사용하여 이미지를 로드하는데 실패한 경우에는 함수를 종료하도록 합니다. "image_name" 부분에는 로드하려는 이미지의 이름을 입력해야 합니다.

Step 2: 이미지 처리하기

이제 이미지의 명암비를 조정할 수 있는 메서드를 작성해보겠습니다. 이 메서드는 UIImage 클래스를 확장(extension)하여 구현할 것입니다.

extension UIImage {
    func adjustContrast(contrast: CGFloat) -> UIImage? {
        UIGraphicsBeginImageContextWithOptions(self.size, false, self.scale)
        guard let context = UIGraphicsGetCurrentContext() else {
            return nil
        }
        
        let rect = CGRect(x: 0, y: 0, width: self.size.width, height: self.size.height)
        self.draw(in: rect)
        
        context.setBlendMode(.multiply)
        context.setAlpha(contrast)
        rect.insetBy(dx: rect.size.width * -1, dy: rect.size.height * -1)
        context.clip(to: rect, mask: self.cgImage!)
        context.setFillColor(UIColor.white.cgColor)
        context.fill(rect)
        
        let adjustedImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        
        return adjustedImage
    }
}

이 메서드는 입력받은 contrast 값을 기반으로 이미지의 명암비를 조정하여 새로운 이미지를 반환합니다. 입력값 contrast는 0부터 1 사이의 값을 가지며, 0에 가까울수록 이미지는 더 어두워지고 1에 가까울수록 더 밝아집니다.

Step 3: 이미지 출력하기

마지막으로, 조정된 이미지를 출력하는 코드를 작성해보겠습니다.

let adjustedImage = image.adjustContrast(contrast: 0.5)
let imageView = UIImageView(image: adjustedImage)
view.addSubview(imageView)

위 코드는 명암비가 0.5로 조정된 이미지를 생성하고, UIImageView를 사용하여 그 이미지를 화면에 표시합니다. 적절한 위치에 이미지 뷰를 추가하면 조정된 이미지를 확인할 수 있습니다.


이상으로 Swift를 사용하여 이미지의 명암비를 조정하는 방법에 대해 알아보았습니다. 이미지 처리 작업은 다양한 기술과 알고리즘을 활용하여 다양한 효과를 구현할 수 있으므로, 자세한 내용은 관련 문서나 참고 자료를 참조해보시기 바랍니다.