[swift] 이미지를 그레이스케일로 변환하기

이미지 처리는 앱 개발 중 자주 사용되는 작업 중 하나입니다. 그 중에서도 이미지를 그레이스케일로 변환하는 작업은 많이 사용되는데, 오늘은 Swift를 사용하여 이미지를 그레이스케일로 변환하는 방법에 대해 알아보겠습니다.

시작하기 전에

이미지 처리를 위해 UIKit 프레임워크의 UIImage 클래스를 사용할 것입니다. 따라서 프로젝트에 UIKit 프레임워크를 추가해야 합니다.

코드 작성하기

import UIKit

func convertToGrayscale(image: UIImage) -> UIImage? {
    // 이미지 크기 및 색상 공간 설정
    let imageSize = image.size
    let colorSpace = CGColorSpaceCreateDeviceGray()
    
    // 비트맵 그래픽 컨텍스트 생성
    let bitmapInfo = CGBitmapInfo(rawValue: CGImageAlphaInfo.none.rawValue)
    guard let context = CGContext(data: nil, width: Int(imageSize.width),
                                  height: Int(imageSize.height), bitsPerComponent: 8,
                                  bytesPerRow: Int(imageSize.width), space: colorSpace,
                                  bitmapInfo: bitmapInfo.rawValue) else {
        return nil
    }
    
    // 그래픽 컨텍스트에 이미지 그리기
    let imageRect = CGRect(origin: .zero, size: imageSize)
    context.draw(image.cgImage!, in: imageRect)
    
    // 그레이스케일 이미지 생성
    guard let grayscaleImage = context.makeImage() else {
        return nil
    }
    
    // UIImage로 변환하여 반환
    return UIImage(cgImage: grayscaleImage)
}

// 사용 예시
let originalImage = UIImage(named: "example_image")
let grayscaleImage = convertToGrayscale(image: originalImage)

코드 설명

  1. convertToGrayscale(image:) 함수를 정의하여 이미지를 그레이스케일로 변환합니다.
  2. UIImage 객체의 크기와 색상 공간을 설정합니다. 여기서는 CGColorSpaceCreateDeviceGray()를 사용하여 그레이스케일 색상 공간을 생성합니다.
  3. 비트맵 그래픽 컨텍스트를 생성합니다. CGContext 클래스를 사용하여 이미지를 그릴 수 있는 그래픽 컨텍스트를 만듭니다.
  4. 그래픽 컨텍스트에 입력 이미지를 그립니다. draw(_:in:) 메서드를 사용하여 입력 이미지를 그래픽 컨텍스트에 그립니다.
  5. 그레이스케일 이미지를 생성합니다. makeImage() 메서드를 호출하여 그래픽 컨텍스트로부터 그레이스케일 이미지를 생성합니다.
  6. CGImage 객체를 UIImage 객체로 변환하여 반환합니다.

결론

Swift를 사용하여 이미지를 그레이스케일로 변환하는 간단한 코드를 살펴보았습니다. 이미지 처리에는 다양한 작업이 가능하므로, 필요에 따라 다른 이미지 처리 작업에 대해서도 공부해보시기 바랍니다.