Core Image是一个强大的滤镜处理框架。它除了可以直接给图片添加各种内置滤镜,还能精确地修改鲜艳程度, 色泽, 曝光等,下面通过两个样例演示如何给UIImage添加滤镜。
使用样例:
2,黑白滤镜 - CIPhotoEffectNoir
使用样例:
原文出自: 转载请保留原文链接:
1,棕褐色滤镜 - CISepiaTone
这个有点复古老照片发黄的效果(上面一张是原图)。
扩展UIImage类,添加棕褐色滤镜:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | import UIKit //--- UIImageFilterExtension.swift --- extension UIImage { //棕褐色复古滤镜(老照片效果) func sepiaTone() -> UIImage ? { let imageData = UIImagePNGRepresentation ( self ) let inputImage = CoreImage . CIImage (data: imageData!) let context = CIContext (options: nil ) let filter = CIFilter (name: "CISepiaTone" ) filter !.setValue(inputImage, forKey: kCIInputImageKey) filter !.setValue(0.8, forKey: "inputIntensity" ) if let outputImage = filter !.outputImage { let outImage = context.createCGImage(outputImage, fromRect: outputImage.extent) return UIImage ( CGImage : outImage) } return nil } } |
1 | imageView1.image = UIImage (named: "img2.jpg" )?.sepiaTone() |
扩展UIImage类,添加黑白滤镜:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import UIKit //--- UIImageFilterExtension.swift --- extension UIImage { //黑白效果滤镜 func noir() -> UIImage ? { let imageData = UIImagePNGRepresentation ( self ) let inputImage = CoreImage . CIImage (data: imageData!) let context = CIContext (options: nil ) let filter = CIFilter (name: "CIPhotoEffectNoir" ) filter !.setValue(inputImage, forKey: kCIInputImageKey) if let outputImage = filter !.outputImage { let outImage = context.createCGImage(outputImage, fromRect: outputImage.extent) return UIImage ( CGImage : outImage) } return nil } } |
1 | imageView1.image = UIImage (named: "img2.jpg" )?.noir() |