[swift] 이미지를 밝게 또는 어둡게 조정하기

이미지 처리는 iOS 앱 개발에서 중요한 부분 중 하나입니다. 사용자에게 더 나은 시각적 경험을 제공하기 위해 이미지의 밝기를 조정하는 것은 매우 유용합니다.

이번에는 Swift를 사용하여 이미지를 밝게 또는 어둡게 조정하는 방법에 대해 알아보겠습니다.

이미지를 밝게 조정하기

이미지를 밝게 조정하기 위해서는 CIFilter를 사용합니다. CIFilter는 Core Image 프레임워크의 일부로 이미지 필터링을 수행하는 데 사용됩니다.

import UIKit
import CoreImage

// 이미지를 밝게 조정하는 함수
func brightenImage(_ image: UIImage, brightness: Float) -> UIImage? {
    guard let ciImage = CIImage(image: image) else { return nil }
    
    let filter = CIFilter(name: "CIColorControls")
    filter?.setValue(ciImage, forKey: kCIInputImageKey)
    filter?.setValue(brightness, forKey: kCIInputBrightnessKey)
    
    guard let outputImage = filter?.outputImage else { return nil }
    
    let context = CIContext(options: nil)
    guard let cgImage = context.createCGImage(outputImage, from: outputImage.extent) else { return nil }
    
    return UIImage(cgImage: cgImage)
}

// 사용 예시
let image = UIImage(named: "your_image_name")
let brightenedImage = brightenImage(image, brightness: 0.5)

위 코드에서 brightenImage 함수는 입력 이미지와 밝기 값을 받아서 새로운 이미지를 반환합니다. 이 함수는 CIColorControls 필터를 사용하여 이미지의 밝기를 조정합니다. brightness 매개변수를 통해 조정할 수 있습니다. 값이 1보다 크면 이미지가 밝아지고, 값이 1보다 작으면 이미지가 어두워집니다.

이미지를 어둡게 조정하기

이미지를 어둡게 조정하는 방법은 밝게 조정하는 방법과 매우 유사합니다. 약간의 차이는 필터의 이름과 조절하는 값의 범위 정도입니다.

import UIKit
import CoreImage

// 이미지를 어둡게 조정하는 함수
func darkenImage(_ image: UIImage, darkness: Float) -> UIImage? {
    guard let ciImage = CIImage(image: image) else { return nil }
    
    let filter = CIFilter(name: "CIColorControls")
    filter?.setValue(ciImage, forKey: kCIInputImageKey)
    filter?.setValue(darkness, forKey: kCIInputBrightnessKey)
    
    guard let outputImage = filter?.outputImage else { return nil }
    
    let context = CIContext(options: nil)
    guard let cgImage = context.createCGImage(outputImage, from: outputImage.extent) else { return nil }
    
    return UIImage(cgImage: cgImage)
}

// 사용 예시
let image = UIImage(named: "your_image_name")
let darkenedImage = darkenImage(image, darkness: -0.5)

darkenImage 함수는 CIColorControls 필터를 사용하여 이미지의 밝기를 조절하는데, brightness 대신 darkness 매개변수를 사용합니다. darkness 값이 0보다 작으면 이미지가 어두워지고, 값이 0보다 크면 이미지가 밝아집니다.

이제 이미지의 밝기를 쉽게 조절할 수 있는 방법을 알게 되었습니다. iOS 앱에서 이미지 처리에 사용되는 CIFilter를 활용하여 다양한 이미지 효과를 구현할 수 있습니다.


참고자료: