Swift CoreImage ile Görüntü Filtreleme: Eğlenceli ve Açıklayıcı Bir Rehber
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:
- CISepiaTone
- CIPhotoEffectNoir
- CIPhotoEffectMono
- CIVignette
- CIColorInvert
- CIComicEffect
- 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!