iOS8 Core Image In Swift:自动改善图像以及内置滤镜的使用
iOS8 Core Image In Swift:更复杂的滤镜
iOS8 Core Image In Swift:人脸检测以及马赛克
iOS8 Core Image In Swift:视频实时滤镜
Core Image是一个很强大的框架。它可以让你简单地应用各种滤镜来处理图像,比如修改鲜艳程度, 色泽, 或者曝光。 它利用GPU(或者CPU)来非常快速、甚至实时地处理图像数据和视频的帧。并且隐藏了底层图形处理的所有细节,通过提供的API就能简单的使用了,无须关心OpenGL或者OpenGL ES是如何充分利用GPU的能力的,也不需要你知道GCD在其中发挥了怎样的作用,Core Image处理了全部的细节。
Core Image框架给我们提供了这些东西:
- 内置的图片滤镜
- 特征检测能力(如人脸识别)
- 支持自动改善图像
- 能利用多个滤镜组合成一个自定义滤镜
自动改善图像
先上一个简单的例子。用Single View Application的工程模板建立一个工程,这个工程建好后只有一个AppDelegate和一个ViewController,另外还有一个Main.storyboard,在Main.storyboard里已经准备好一个ViewController了,我们在这个ViewController里放置一个UIImageView,调整其frame:
除此之外,因为UIImageView是默认拉伸图片的,我们不想让它变形,把它的ContentMode设置为Aspect Fit。顺便把Auto Layout和Size Classes关掉。
最后在拖两个按钮进来,一个用于显示原图,一个用于自动改善图像,整个ViewController看起来像这样:
接下来在ViewController中增加对应的IBAction方法以及IBOutlet属性:
class ViewController: UIViewController {
@IBOutlet var imageView: UIImageView!
lazy var originalImage: UIImage = {
return UIImage(named: "Image")
}()
......
然后在ViewDidLoad里像这样:
override func viewDidLoad() {
super.viewDidLoad()
self.imageView.layer.shadowOpacity = 0.8
self.imageView.layer.shadowColor = UIColor.blackColor().CGColor
self.imageView.layer.shadowOffset = CGSize(width: 1, height: 1)
self.imageView.image = originalImage
}
只做了两件事:一是给imageView加上了阴影边框,只是为了好看;二是把originalImage赋值给imageView。
一行代码显示原图:
@IBAction func showOriginalImage() {
self.imageView.image = originalImage
}
下面是自动改善的代码,我先贴出来,再慢慢说,有一个直观的效果会更有兴趣一些: