Untitled
unknown
swift
3 years ago
7.3 kB
11
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...