はじめに
CIFilter8日目
サンプルアプリ
実装
import SwiftUI
struct ContentView: View {
private let image = UIImage(named: "sample")!
@State private var uiImage: UIImage?
@State private var red: CGFloat = 0.0
@State private var green: CGFloat = 0.0
@State private var blue: CGFloat = 0.0
var body: some View {
ScrollView {
VStack {
if let uiImage {
Image(uiImage: uiImage)
.resizable()
.scaledToFit()
} else {
Image(uiImage: image)
.resizable()
.scaledToFit()
}
HStack(spacing: 15) {
Button {
applyWhitePointFilter()
} label: {
Text("適用")
}
Button {
uiImage = nil
red = 0.0
green = 0.0
blue = 0.0
} label: {
Text("リセット")
}
}
VStack {
Text("red: \(red.description)")
Slider(value: $red, in: 0...1)
}
VStack {
Text("green: \(green.description)")
Slider(value: $green, in: 0...1)
}
VStack {
Text("blue: \(blue.description)")
Slider(value: $blue, in: 0...1)
}
}
.padding(.horizontal, 20)
}
}
func applyWhitePointFilter() {
let context = CIContext()
let inputImage = CIImage(image: image)!
let inputColor = CIColor(red: red, green: green, blue: blue)
guard let whitePointFilter = CIFilter(name: "CIWhitePointAdjust", parameters: [
kCIInputImageKey: inputImage,
kCIInputColorKey: inputColor
]) else { return }
guard let outputImage = whitePointFilter.outputImage else { return }
guard let cgImage = context.createCGImage(outputImage, from: outputImage.extent) else { return }
self.uiImage = UIImage(cgImage: cgImage)
}
}
おわり
画像の色味を調整できました