[swift] 이미지 필터 적용하기

이미지 필터링은 iOS 앱에서 사진을 수정하고 향상시킬 수 있는 강력한 기능 중 하나입니다. Swift를 사용하여 이미지에 다양한 필터를 적용하는 방법을 알아보겠습니다.

필터 적용을 위한 준비

먼저 UIImage 객체에 이미지를 로드해야 합니다. 다음은 이미지를 로드하는 방법입니다.

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

이제 우리는 originalImage를 기준으로 다양한 필터를 적용할 것입니다.

필터 적용하기

iOS에서 이미지 필터를 적용하기 위해 Core Image 프레임워크를 사용할 수 있습니다. Core Image는 다양한 이미지 처리 작업을 수행할 수 있는 강력한 도구입니다. 다음은 Core Image를 사용하여 이미지에 필터를 적용하는 방법입니다.

import CoreImage

// 이미지 필터 생성
guard let filter = CIFilter(name: "CIPhotoEffectMono") else {
    return
}

// 이미지 설정
let ciImage = CIImage(image: originalImage)
filter.setValue(ciImage, forKey: kCIInputImageKey)

// 필터링된 이미지 얻기
guard let outputCIImage = filter.outputImage,
      let outputImage = CIContext().createCGImage(outputCIImage, from: outputCIImage.extent) else {
    return
}

// 필터링된 이미지를 UIImage로 변환
let filteredImage = UIImage(cgImage: outputImage)

위의 코드에서 CIPhotoEffectMono는 이미지에 흑백 필터를 적용하는 필터입니다. CIFilter(name:)를 사용하여 원하는 필터를 생성하고, setValue(_:forKey:)를 사용하여 입력 이미지를 설정합니다. 마지막으로 CIContext().createCGImage(_: from:)를 사용하여 필터링된 이미지를 얻고, 이를 UIImage로 변환합니다.

다른 필터 적용하기

iOS는 다양한 이미지 필터를 제공합니다. 영상을 블러 처리하는 CIGaussianBlur, 색상을 조정하는 CIColorControls, 이미지를 왜곡시키는 CIPerspectiveTransform 등 다양한 필터를 사용할 수 있습니다. 필터의 이름은 CIFilter 클래스의 filterNames(inCategory:) 메서드를 통해 확인할 수 있습니다.

let filterNames = CIFilter.filterNames(inCategory: kCICategoryBuiltIn)
for filterName in filterNames {
    print(filterName)
}

위의 코드는 사용 가능한 모든 필터의 이름을 콘솔에 출력합니다.

결론

Swift를 사용하여 iOS 앱에서 이미지 필터를 적용하는 방법을 알아보았습니다. Core Image 프레임워크를 활용하여 간편하고 효과적으로 이미지를 향상시킬 수 있습니다. 필요한 경우 다양한 필터를 적용하여 원하는 결과를 얻을 수 있습니다.

참고: