Untitled
unknown
swift
2 years ago
7.3 kB
8
Indexable
// // ImagePickerView.swift // Garageworks-iOS-Revamp // // Created by DigitalFlake Kapil Dongre on 13/01/23. // /* ImagePickerView which confirms, UIViewControllerRepresentable (this is helps us to use UIKit in SwiftUI) protocol.*/ import UIKit import SwiftUI struct ImagePickerView: UIViewControllerRepresentable { var sourceType: UIImagePickerController.SourceType = .photoLibrary @Binding var showingType: PhotoSheetType? @Binding var selectedRCfront: UIImage @Binding var buttonTag: String @Environment(\.presentationMode) private var presentationMode func makeUIViewController(context: UIViewControllerRepresentableContext<ImagePickerView>) -> UIImagePickerController { print("Button tag received of image type: \(buttonTag)") let imagePicker = UIImagePickerController() imagePicker.allowsEditing = false imagePicker.sourceType = sourceType imagePicker.delegate = context.coordinator return imagePicker } func updateUIViewController(_ uiViewController: UIImagePickerController, context: UIViewControllerRepresentableContext<ImagePickerView>) { } func makeCoordinator() -> Coordinator { Coordinator(self, selectedButtonTag: "") } final class Coordinator: NSObject, UIImagePickerControllerDelegate, UINavigationControllerDelegate { var parent: ImagePickerView var selectedButtonTag: String init(_ parent: ImagePickerView, selectedButtonTag: String) { self.parent = parent self.selectedButtonTag = selectedButtonTag } func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { if let image = info[UIImagePickerController.InfoKey.originalImage] as? UIImage { parent.selectedRCfront = image if parent.buttonTag == "RC_Front"{ print("Tag matched RC_Front") saveImageDocumentDirectoryRCFront(image: image, nameAndExtension: "Rc_front.png") } else if parent.buttonTag == "RC_Back" { saveImageDocumentDirectoryRCBack(image: image, nameAndExtension: "Rc_back.png") print("Tag matched RC_back") } else if parent.buttonTag == "DL_Front" { print("Tag matched DL_Front") saveImageDocumentDirectoryDrivingLicenseFront(image: image, nameAndExtension: "DL_Front.png") } else if parent.buttonTag == "DL_Rear" { print("Tag matched DL_Rear") saveImageDocumentDirectoryDrivingLicenseRear(image: image, nameAndExtension: "DL_Rear.png") } else if parent.buttonTag == "PUC_Front"{ print("Tag matched PUC_Front") saveImageDocumentDirectoryPUCFront(image: image, nameAndExtension: "PUC_Front.png") } else if parent.buttonTag == "PUC_Rear"{ print("Tag matched PUC_Rear") saveImageDocumentDirectoryPUCRear(image: image, nameAndExtension: "PUC_Rear.png") } } parent.presentationMode.wrappedValue.dismiss() } } } func saveImageDocumentDirectoryRCBack(image: UIImage, nameAndExtension: String){ let fileManager = FileManager.default let paths = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent(nameAndExtension) print(paths) let imageData = image.jpegData(compressionQuality: 0.5) fileManager.createFile(atPath: paths as String, contents: imageData, attributes: nil) } func saveImageDocumentDirectoryRCFront(image: UIImage, nameAndExtension: String){ let fileManager = FileManager.default let paths = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent(nameAndExtension) print(paths) let imageData = image.jpegData(compressionQuality: 0.5) fileManager.createFile(atPath: paths as String, contents: imageData, attributes: nil) } func saveImageDocumentDirectoryDrivingLicenseFront(image: UIImage, nameAndExtension: String){ let fileManager = FileManager.default let paths = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent(nameAndExtension) print(paths) let imageData = image.jpegData(compressionQuality: 0.5) fileManager.createFile(atPath: paths as String, contents: imageData, attributes: nil) } func saveImageDocumentDirectoryDrivingLicenseRear(image: UIImage, nameAndExtension: String){ let fileManager = FileManager.default let paths = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent(nameAndExtension) print(paths) let imageData = image.jpegData(compressionQuality: 0.5) fileManager.createFile(atPath: paths as String, contents: imageData, attributes: nil) } func saveImageDocumentDirectoryPUCFront(image: UIImage, nameAndExtension: String){ let fileManager = FileManager.default let paths = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent(nameAndExtension) print(paths) let imageData = image.jpegData(compressionQuality: 0.5) fileManager.createFile(atPath: paths as String, contents: imageData, attributes: nil) } func saveImageDocumentDirectoryPUCRear(image: UIImage, nameAndExtension: String){ let fileManager = FileManager.default let paths = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent(nameAndExtension) print(paths) let imageData = image.jpegData(compressionQuality: 0.5) fileManager.createFile(atPath: paths as String, contents: imageData, attributes: nil) } //to retrieve the directory Path func getDirectoryPath() -> String { let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true) let documentsDirectory = paths[0] return documentsDirectory } func getImage(nameAndExtension: String) -> UIImage?{ var image: UIImage? = nil let fileManager = FileManager.default let imagePAth = (getDirectoryPath() as NSString).appendingPathComponent(nameAndExtension) if fileManager.fileExists(atPath: imagePAth){ image = UIImage(contentsOfFile: imagePAth) } return image } func createDirectory(nameDirectory: String){ let fileManager = FileManager.default let paths = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent(nameDirectory) if !fileManager.fileExists(atPath: paths){ try! fileManager.createDirectory(atPath: paths, withIntermediateDirectories: true, attributes: nil) }else{ print("Already dictionary created.") } }
Editor is loading...