Select Git revision
ImageCompressManager.swift
-
Mustafa Merza authoredMustafa Merza authored
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(),