Swift CoreImage ile Görüntü Filtreleme: Eğlenceli ve Açıklayıcı Bir Rehber

Abdurrahmanpolat
Kariyer.net Tech
Published in
4 min readJul 6, 2024

Günümüzde görsellerin estetik çekiciliğini artırmak için birçok filtre kullanılıyor. Swift’in CoreImage kütüphanesi, bu konuda oldukça güçlü bir araç seti sunar. Bu makalede, CoreImage kullanarak nasıl farklı filtreler uygulayabileceğinizi öğreneceksiniz. Bu işlemi basit ve eğlenceli hale getirmek için adım adım ilerleyeceğiz.

Giriş

CoreImage, Apple’ın görsel işleme kütüphanesidir ve çeşitli filtreler sunar. Bu makalede şu filtrelere odaklanacağız:

  1. CISepiaTone
  2. CIPhotoEffectNoir
  3. CIPhotoEffectMono
  4. CIVignette
  5. CIColorInvert
  6. CIComicEffect
  7. CIBloom

Hadi başlayalım!

Efekleri gözlemleye bilmek için aşagıdaki örnek resim için orjinal hali ile başlayalım.

İlk Adım: Proje Kurulumu

Öncelikle bir Xcode projesi oluşturun. ViewController.swift dosyasını açın ve gerekli kütüphaneleri içe aktarın:

import UIKit
import CoreImage
import CoreImage.CIFilterBuiltins

Görüntü Filtreleme İşlemleri

1. CISepiaTone

Sepya tonu, görüntüye eski bir fotoğraf efekti verir.

func applySepiaToneFilter(to image: UIImage) -> UIImage? {
let context = CIContext()
let filter = CIFilter.sepiaTone()
filter.inputImage = CIImage(image: image)
filter.intensity = 1.0

guard let outputImage = filter.outputImage,
let cgImage = context.createCGImage(outputImage, from: outputImage.extent) else { return nil }

return UIImage(cgImage: cgImage)
}

2. CIPhotoEffectNoir

Bu filtre, görselinizi klasik bir siyah-beyaz fotoğrafa dönüştürür.

func applyNoirFilter(to image: UIImage) -> UIImage? {
let context = CIContext()
let filter = CIFilter.photoEffectNoir()
filter.inputImage = CIImage(image: image)

guard let outputImage = filter.outputImage,
let cgImage = context.createCGImage(outputImage, from: outputImage.extent) else { return nil }

return UIImage(cgImage: cgImage)
}

3. CIPhotoEffectMono

Mono filtre, daha yumuşak siyah-beyaz tonlar sunar.

func applyMonoFilter(to image: UIImage) -> UIImage? {
let context = CIContext()
let filter = CIFilter.photoEffectMono()
filter.inputImage = CIImage(image: image)

guard let outputImage = filter.outputImage,
let cgImage = context.createCGImage(outputImage, from: outputImage.extent) else { return nil }

return UIImage(cgImage: cgImage)
}

4. CIVignette

Bu filtre, görselin kenarlarını karartarak merkezi daha belirgin hale getirir.

func applyVignetteFilter(to image: UIImage) -> UIImage? {
let context = CIContext()
let filter = CIFilter.vignette()
filter.inputImage = CIImage(image: image)
filter.intensity = 2.0
filter.radius = 30.0

guard let outputImage = filter.outputImage,
let cgImage = context.createCGImage(outputImage, from: outputImage.extent) else { return nil }

return UIImage(cgImage: cgImage)
}

5. CIColorInvert

Renkleri ters çeviren eğlenceli bir filtre.

func applyColorInvertFilter(to image: UIImage) -> UIImage? {
let context = CIContext()
let filter = CIFilter.colorInvert()
filter.inputImage = CIImage(image: image)

guard let outputImage = filter.outputImage,
let cgImage = context.createCGImage(outputImage, from: outputImage.extent) else { return nil }

return UIImage(cgImage: cgImage)
}

6. CIComicEffect

Görselinizi bir çizgi roman karesine dönüştürün.

func applyComicEffectFilter(to image: UIImage) -> UIImage? {
let context = CIContext()
let filter = CIFilter.comicEffect()
filter.inputImage = CIImage(image: image)

guard let outputImage = filter.outputImage,
let cgImage = context.createCGImage(outputImage, from: outputImage.extent) else { return nil }

return UIImage(cgImage: cgImage)
}

7. CIBloom

Bu filtre, görselinize parlaklık ve yumuşaklık katar.

func applyBloomFilter(to image: UIImage) -> UIImage? {
let context = CIContext()
let filter = CIFilter.bloom()
filter.inputImage = CIImage(image: image)
filter.intensity = 1.0
filter.radius = 10.0

guard let outputImage = filter.outputImage,
let cgImage = context.createCGImage(outputImage, from: outputImage.extent) else { return nil }

return UIImage(cgImage: cgImage)
}

Filtreleri Uygulamak

Filtre fonksiyonlarını kullanarak resminizi nasıl filtreleyeceğinizi gösterelim:

if let image = UIImage(named: "your_image_name") {
let sepiaImage = applySepiaToneFilter(to: image)
let noirImage = applyNoirFilter(to: image)
let monoImage = applyMonoFilter(to: image)
let vignetteImage = applyVignetteFilter(to: image)
let colorInvertImage = applyColorInvertFilter(to: image)
let comicImage = applyComicEffectFilter(to: image)
let bloomImage = applyBloomFilter(to: image)

// Bu görüntüleri UIImageView'larda veya başka yerlerde kullanabilirsiniz.
}

Sonuç

CoreImage ile filtre uygulamak işte bu kadar kolay! Bu filtrelerle görsellerinizi dilediğiniz gibi kişiselleştirebilirsiniz. Deneyin, eğlenin ve yaratıcılığınızı konuşturun!

--

--