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

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.

SwiftUI: how to save photo to somewhere in my app
 
 
Q