[swift] 이미지 색상 조정하기

이미지를 색상 조정하는 것은 iOS 애플리케이션에서 매우 유용한 기능 중 하나입니다. Swift를 사용하여 이미지의 색상을 조정하는 방법에 대해 알아보겠습니다.

UIImage의 Extension 사용

UIImage를 확장하여 이미지의 색상을 조정할 수 있습니다. 다음 코드를 사용하여 이미지의 색상을 조정하는 이미지 확장(extension)을 만들어보겠습니다.

extension UIImage {
    func adjustColor(hue: CGFloat, saturation: CGFloat, brightness: CGFloat, alpha: CGFloat) -> UIImage? {
        UIGraphicsBeginImageContextWithOptions(size, false, 0.0)
        guard let context = UIGraphicsGetCurrentContext() else { return nil }
        
        let rect = CGRect(origin: .zero, size: size)
        draw(in: rect)
        
        context.setBlendMode(.normal)
        context.translateBy(x: rect.origin.x, y: rect.origin.y)
        context.scaleBy(x: rect.size.width / rect.size.width, y: rect.size.height / rect.size.height)
        
        let ciImage = CIImage(image: self)
        if let filter = CIFilter(name: "CIColorControls") {
            filter.setValue(ciImage, forKey: kCIInputImageKey)
            filter.setValue(hue, forKey: kCIInputHueKey)
            filter.setValue(saturation, forKey: kCIInputSaturationKey)
            filter.setValue(brightness, forKey: kCIInputBrightnessKey)
            filter.setValue(alpha, forKey: kCIInputContrastKey)
            
            if let outputImage = filter.outputImage {
                let newImage = UIImage(ciImage: outputImage)
                newImage.draw(in: rect)
                let adjustedImage = UIGraphicsGetImageFromCurrentImageContext()
                UIGraphicsEndImageContext()
                
                return adjustedImage
            }
        }
        
        return nil
    }
}

위의 코드에서는 adjustColor()라는 메서드를 UIImage의 확장으로 추가했습니다. 이 메서드는 원하는 색상 조정 값을 받아옵니다. 그리고 현재 이미지의 컨텍스트를 만들고 CIColorControls라는 필터를 사용하여 이미지의 색상을 조정합니다. 조정된 이미지는 UIGraphicsGetImageFromCurrentImageContext()를 사용하여 가져옵니다.

이미지 색상 조정하기

이제 위에서 생성한 이미지 확장(extension)을 사용하여 이미지의 색상을 조정해보겠습니다.

let originalImage = UIImage(named: "myImage")
let adjustedImage = originalImage?.adjustColor(hue: 0.5, saturation: 0.8, brightness: 0.9, alpha: 1.0)

위의 코드에서는 원본 이미지(originalImage)를 가져오고, adjustColor() 메서드를 사용하여 이미지의 색상을 조정합니다. adjustColor() 메서드의 매개 변수로 원하는 색상 조정 값을 전달하여 새로운 이미지(adjustedImage)를 얻을 수 있습니다.

결론

이미지의 색상 조정은 iOS 애플리케이션에서 시각적인 요소를 변경하고 사용자 경험을 향상시키는 데에 유용한 기능입니다. 위에서 소개한 방법을 사용하여 이미지의 색상을 조정해보세요.

참고 자료