画像加工で周りを暗くして真ん中だけ元の色を残すやり方が以外に簡単だったので
###ここからがコード
記載するコードはこれだけ
※コメントのほうに@loveeさんから指摘して頂いたコードが
あるので下記のコードと照らしあわせてみてください。
override func viewDidLoad() {
super.viewDidLoad()
viewImage.image = UIImage(named: "IMG_3368")
let filteredImage = CIImage(image: self.viewImage.image!)
let filter = CIFilter(name: "CIVignette")
filter!.setValue(filteredImage, forKey: "inputImage")
filter!.setValue(NSNumber(float: 9.0), forKey: "inputIntensity")
let ciContext = CIContext(options: nil)
let imageRef = ciContext.createCGImage((filter?.outputImage)!, fromRect: (filter?.outputImage!.extent)!)
let outputImage = UIImage(CGImage: imageRef)
self.viewImage.image = outputImage
}
###とりあえず適当な画像をいれる
code
viewImage.image = UIImage(named: "任意の画像")
###UIImageをCIImageにキャスト
code
let filteredImage = CIImage(image: self.viewImage.image!)
###フィルターを選ぶ
code
let filter = CIFilter(name: "CIVignette")
※フィルターは色々あるのでこちらを参考に色々ためしてみてくださいー
Core Image Filter Reference by Apple
###フィルターに値を入れていく
code
イメージをセット
filter!.setValue(filteredImage, forKey: "inputImage")
周りの色の濃さを変更
filter!.setValue(NSNumber(float: 9.0), forKey: "inputIntensity")
※NSNumber(float: 9.0)ここの数値を変更すると色の濃さが変わる
###コンテキストをつくってフィルターを適応
※このCIContextがいまいち意味がわからん
let ciContext = CIContext(options: nil)
let imageRef = ciContext.createCGImage((filter?.outputImage)!, fromRect: filter?.outputImage!.extent)!)
###フィルターを通した画像を変数に入れる
code
let outputImage = UIImage(CGImage: imageRef)
###フィルタ加工した画像を代入してやる
self.viewImage.image = outputImage
とまぁこんな感じで簡単だった。
処理が結構重いのか表示に少し時間がかかるので、そのへんの細かいところは
UXでカバーしてみる。。。
間違っているところなどあれば、優しくつっこんでください!