import SwiftUI
import CoreImage.CIFilterBuiltins

struct ContentView: View {
   @State private var picture = UIImage(named: "picturedog")!

   var body: some View {
      VStack {
         Button("Apply Filter") {
            Task {
               await applyFilter()
            }
         }.buttonStyle(.borderedProminent)

         Image(uiImage: picture)
            .resizable()
            .scaledToFit()
         Spacer()
      }
      .padding()
   }
   func applyFilter() async {
      let context = CIContext()
      let blurFilter = CIFilter.gaussianBlur()
      blurFilter.inputImage = CIImage(image: picture)
      blurFilter.radius = 10
      if let output = blurFilter.outputImage {
         if let image = context.createCGImage(output, from: output.extent) {
            picture = UIImage(cgImage: image)
         }
      }
   }
}