GPUImage2を使って写真から全体の平均色を抽出します。
GPUImage2はSwiftで書き直されたもので、Mac、iOS、そしてLinuxに対応しています。
他にも平均色の抽出方法はありますが、画像処理にGPUを利用するメリットは大きく、CPUを使う処理と比べて体感できるほど速度に違いが出ます。
GPUImage2をプロジェクトへ導入
Cocoapodsには1はあっても2はないため、手動で導入します。
- BradLarson / GPUImage2をダウンロードします。
- プロジェクト内に
GPUImage-iOS.xcodeproj
をドロップ&ドラッグで放り込む、もしくは File > Add File to "ProjectName" で追加します。 - プロジェクトのターゲットを選択し、
Build Phases > Target Dependencies
にGPUImage
を追加します。 - プロジェクトのターゲットを選択し、
General > Embedded Binaries
にGPUImage.framework iOS
を追加します。
画像全体の色の平均を抽出
import UIKit
import GPUImage
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let extractor = AverageColorExtractor()
extractor.extractedColorCallback = { [weak self] (color: Color) in
let uiColor = UIColor(red: CGFloat(color.redComponent),
green: CGFloat(color.greenComponent),
blue: CGFloat(color.blueComponent),
alpha: CGFloat(color.alphaComponent))
self?.view.backgroundColor = uiColor
}
let image = UIImage(named: "myImage.jpg")
_ = image?.filterWithOperation(extractor)
}
}