ارفع راسك فوق انته سوري حر ... :green_heart::green_heart:

Skip to content
Snippets Groups Projects
Select Git revision
  • ui-ux-improvments
  • signature
  • main default protected
3 results

ImageCompressManager.swift

Blame
  • ImageCompressManager.swift 2.35 KiB
    //
    //  ImageCompressManager.swift
    //  MiniScanner
    //
    //  Created by Mustafa Merza on 8/12/24.
    //  Copyright © 2024 AppsNectar. All rights reserved.
    //
    
    import Foundation
    
    class ImageCompressManager {
        
        static var compressType: CompressType = .wxCompress
        
        @Inject private static var deleteScanSessionUseCase: DeleteScanSessionUseCase
        
        class func compress(image: UIImage) -> UIImage {
            
            switch compressType {
            case .wxCompress:
                wxCompress(image: image)
            }
        }
        
        class func compress(scannedItem: ScannedItem) -> ScannedItem {
            
            switch compressType {
            case .wxCompress:
                wxCompress(scannedItem: scannedItem)
            }
        }
    }
    
    extension ImageCompressManager {
        
        private class func wxCompress(image: UIImage) -> UIImage {
            image.wxCompress()
        }
        
        private class func wxCompress(scannedItem: ScannedItem) -> ScannedItem {
            
            guard let originalImage = scannedItem.newOriginalImage?.retrieveImage(),
                  let renderedImage = scannedItem.newRenderedImage?.retrieveImage()
                    
            else { return scannedItem }
            
            // Remove the scanned item old files
            removeScannedItemFile(scannedItem: scannedItem)
            
            let compressedOriginalImage = compress(image: originalImage)
            let compressedRenderedImage = compress(image: renderedImage)
            
            let newScannedItem = scannedItem.createItem(originalImage: compressedOriginalImage,
                                                        renderedImage: compressedRenderedImage,
                                                        type: scannedItem.type)
            
            if let imageUrl = scannedItem.newOriginalImage {
                try? FileManager.default.removeItem(at: imageUrl)
            }
            
            if let imageUrl = scannedItem.newRenderedImage {
                try? FileManager.default.removeItem(at: imageUrl)
            }
            
            return newScannedItem
        }
        
        private class func removeScannedItemFile(scannedItem: ScannedItem) {
            
            let scanSession = ScanSession(id: UUID(),