カメラアプリでフィルターを掛けたい場合、GPUImageはお手軽にサクッと実装できて、とても良い感じだと思いました。
下記のように複数フィルターを重ねて数行でそれなりの良い感じのフィルターを作成することができます。
CameraViewController.swift
import GPUImage
class CameraViewController: UIViewController {
var videoCamera: GPUImageVideoCamera?
var filterGroup: GPUImageFilterGroup?
override func viewDidLoad() {
videoCamera = GPUImageVideoCamera(sessionPreset: AVCaptureSessionPresetHigh, cameraPosition: .back)
videoCamera!.outputImageOrientation = .portrait;
// 明るさ
let brightnessFilter = GPUImageBrightnessFilter()
brightnessFilter.brightness = 0.01
// コントラスト
let contrastFilter = GPUImageContrastFilter()
contrastFilter.contrast = 1.1
// 彩度
let satureationFilter = GPUImageSaturationFilter()
satureationFilter.saturation = 0.8
// フィルターを重ねる
brightnessFilter.addTarget(contrastFilter)
contrastFilter.addTarget(satureationFilter)
// フィルターグループ生成
filterGroup = GPUImageFilterGroup()
filterGroup?.addFilter(brightnessFilter)
filterGroup?.addFilter(contrastFilter)
filterGroup?.addFilter(satureationFilter)
filterGroup?.initialFilters = [brightnessFilter]
filterGroup?.terminalFilter = satureationFilter
videoCamera!.addTarget(filterGroup)
filterGroup?.addTarget(self.view as! GPUImageView)
videoCamera?.startCapture()
}
}