SwiftUI: how to save photo to somewhere in my app

SwiftUI: how to save the camera photo to somewhere of my app

here is my code :

ContentView.swift:

import SwiftUI

struct ContentView: View {
    @State private var showImagePicker: Bool = false
       @State private var image:Image? = nil
    var body: some View {
        VStack{
         image?.resizable()
                       .scaledToFit()
                       .clipShape(Circle())

            Spacer()
        Button("take photo"){
                self.showImagePicker = true
               }.padding()
                   .background(Color.green)
        .font(.system(size: 40))
                   .foregroundColor(Color.white)
               .cornerRadius(90)
            Spacer().frame(width: 0, height: 20, alignment: .topLeading)
        }.sheet(isPresented: self.$showImagePicker){
            PhotoCaptureView(showImagePicker: self.$showImagePicker, image: self.$image)
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

PhotoCapture.swift:

import SwiftUI

struct PhotoCaptureView: View {
    @Binding var showImagePicker: Bool
    @Binding var image:Image?
    
    
    var body: some View {
        ImagePicker(isShown: $showImagePicker, image: $image)
    }
}

#if DEBUG
struct PhotoCaptureView_Previews: PreviewProvider {
    static var previews: some View {
        PhotoCaptureView(showImagePicker: .constant(false), image: .constant(Image("")))
    }
}
#endif

ImagePicker.swift:

import Foundation
import SwiftUI

class ImagePickerCoorinator: NSObject, UINavigationControllerDelegate,UIImagePickerControllerDelegate
 {
     @Binding var isShown: Bool
     @Binding var image: Image?
     
     init(isShown: Binding, image: Binding<image?>){
         _isShown = isShown
         _image = image
     }
     
     func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
         let uiImage = info[UIImagePickerController.InfoKey.originalImage] as! UIImage
         image = Image(uiImage:uiImage)
         
         isShown = false
     }
     func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
         isShown = false
     }
 }
 struct ImagePicker: UIViewControllerRepresentable {
     
     @Binding var isShown: Bool
     @Binding var image: Image?
     
     func updateUIViewController(_ uiViewController: UIImagePickerController, context: UIViewControllerRepresentableContext) {
         
     }
     func makeCoordinator() -> ImagePickerCoorinator {
         return ImagePickerCoorinator(isShown: $isShown, image: $image)
     }
     
     func makeUIViewController(context: UIViewControllerRepresentableContext) -> UIImagePickerController {
         let picker = UIImagePickerController()
         picker.delegate = context.coordinator
         picker.sourceType = .camera
         picker.allowsEditing = false
         picker.cameraDevice = .front
         picker.cameraCaptureMode = .photo
         picker.cameraFlashMode = .off
         picker.showsCameraControls = true
         picker.videoQuality = .type640x480
         //picker.cameraViewTransform = picker.cameraViewTransform.scaledBy(x: 1, y: -1)
         picker.isEditing = true
         
         return picker
     }
 }

Replies

Seems that's detailed here:


h ttps://www.hackingwithswift.com/books/ios-swiftui/how-to-save-images-to-the-users-photo-library


PS: you should move the question to SwiftUI section.