[swift] 이미지에 효과 적용하기

이미지에 효과를 적용하는 것은 앱 개발에서 중요한 부분 중 하나입니다. 사용자에게 더욱 흥미로운 화면을 제공하기 위해 이미지에 다양한 효과를 추가할 수 있습니다. Swift를 사용하여 이미지에 효과를 적용하는 방법을 알아보겠습니다.

그래픽 효과 적용하기

이미지 필터링

이미지 필터를 사용하여 이미지에 다양한 시각적 효과를 적용할 수 있습니다. CIFilter 클래스를 사용하여 이미지 필터를 생성하고 이미지에 적용할 수 있습니다. 예를 들어, 흑백 필터를 적용하려면 다음 코드를 사용할 수 있습니다.

import UIKit
import CoreImage

func applyBlackAndWhiteFilter(to image: UIImage) -> UIImage? {
    guard let ciImage = CIImage(image: image) else { return nil }
    
    let filter = CIFilter(name: "CIPhotoEffectMono")
    filter?.setValue(ciImage, forKey: kCIInputImageKey)
    
    guard let outputCIImage = filter?.outputImage else { return nil }
    let context = CIContext(options: nil)
    guard let cgImage = context.createCGImage(outputCIImage, from: outputCIImage.extent) else { return nil }
    
    return UIImage(cgImage: cgImage)
}

위의 코드에서는 CIPhotoEffectMono 필터를 사용하여 흑백 효과를 적용합니다. 다른 이미지 필터를 사용하려면 CIFiltername 속성을 변경하면 됩니다.

색상 조정

RGB 색상 공간을 사용하여 이미지의 색상을 조정할 수도 있습니다. 예를 들어, 다음 코드는 이미지의 색상을 빨간색 성분을 강조하는 효과를 적용합니다.

import UIKit

func applyRedTint(to image: UIImage) -> UIImage? {
    UIGraphicsBeginImageContextWithOptions(image.size, false, 0.0)
    
    let context = UIGraphicsGetCurrentContext()
    context?.translateBy(x: 0, y: image.size.height)
    context?.scaleBy(x: 1.0, y: -1.0)
    context?.draw(image.cgImage!, in: CGRect(x: 0, y: 0, width: image.size.width, height: image.size.height))
    
    context?.setBlendMode(.multiply)
    context?.setFillColor(UIColor.red.cgColor)
    context?.fill(CGRect(x: 0, y: 0, width: image.size.width, height: image.size.height))
    
    let tintedImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    
    return tintedImage
}

테두리 추가

이미지에 테두리를 추가하여 윤곽을 강조할 수도 있습니다. CALayer를 사용하여 이미지에 테두리를 그릴 수 있습니다. 다음 코드는 이미지에 빨간색 테두리를 추가합니다.

import UIKit

func addBorder(to image: UIImage) -> UIImage? {
    let borderWidth: CGFloat = 10.0
    let borderColor = UIColor.red.cgColor
    
    UIGraphicsBeginImageContextWithOptions(image.size, false, 0.0)
    
    let context = UIGraphicsGetCurrentContext()
    context?.translateBy(x: 0, y: image.size.height)
    context?.scaleBy(x: 1.0, y: -1.0)
    context?.draw(image.cgImage!, in: CGRect(x: 0, y: 0, width: image.size.width, height: image.size.height))
    
    let path = UIBezierPath(rect: CGRect(x: 0, y: 0, width: image.size.width, height: image.size.height))
    path.lineWidth = borderWidth
    borderColor.setStroke()
    path.stroke()
    
    let borderedImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    
    return borderedImage
}

이미지 효과 적용하기

위에서 구현한 함수들을 사용하여 이미지에 효과를 적용할 수 있습니다.

let originalImage = UIImage(named: "myImage.jpg")
let blackAndWhiteImage = applyBlackAndWhiteFilter(to: originalImage)
let tintedImage = applyRedTint(to: blackAndWhiteImage)
let finalImage = addBorder(to: tintedImage)

위의 예시에서는 원본 이미지에 흑백 필터를 적용하고, 그 결과에 빨간색 테두리를 추가하여 최종 이미지를 생성합니다.

결론

Swift를 사용하여 이미지에 효과를 적용하는 방법을 알아보았습니다. 이미지 필터링, 색상 조정, 테두리 추가 등 다양한 효과를 사용하여 앱에 더욱 흥미로운 이미지 화면을 구성할 수 있습니다. 응용 프로그램에 맞게 다양한 효과를 적용하여 사용자에게 독특한 시각적 경험을 제공하세요.

참고 자료: