はじめに
CIFIlter関係の記事3日目です
今回は色相を調整してみます。
サンプルアプリ
実装
import SwiftUI
struct ContentView: View {
private let image = UIImage(named: "sample")!
@State private var uiImage: UIImage?
@State private var hue: CGFloat = 0.0
var body: some View {
ScrollView {
VStack {
if let uiImage {
Image(uiImage: uiImage)
.resizable()
.scaledToFit()
} else {
Image(uiImage: image)
.resizable()
.scaledToFit()
}
Button {
applyHueAdjust()
} label: {
Text("更新")
}
VStack(spacing: 0) {
Text("hue: \(hue.description)")
Slider(value: $hue, in: -1.0...1.0)
}
}
.padding(.horizontal, 20)
}
}
func applyHueAdjust() {
let context = CIContext()
let inputImage = CIImage(image: image)!
// 色相を調整
guard let hueAdjustFilter = CIFilter(name: "CIHueAdjust", parameters: [
kCIInputImageKey: inputImage,
kCIInputAngleKey: hue
]) else { return }
// 出力
guard let outputImage = hueAdjustFilter.outputImage else { print("ここ1"); return }
guard let cgImage = context.createCGImage(outputImage, from: inputImage.extent) else { print("ここ2"); return }
self.uiImage = UIImage(cgImage: cgImage)
}
}
おわり
いい感じにできました