1
2

【Swift】CIFilterで画像の色相を調整する

Last updated at Posted at 2023-10-14

はじめに

CIFIlter関係の記事3日目です
今回は色相を調整してみます。

サンプルアプリ

Simulator Screen Recording - iPhone 15 - 2023-10-14 at 20.49.49.gif

実装

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)
    }
}

おわり

いい感じにできました

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2