diff --git a/MiniScanner/Features/ScanSession/Data/Repositores/ScanSessionsRepository.swift b/MiniScanner/Features/ScanSession/Data/Repositores/ScanSessionsRepository.swift index f2b666bb4761554e8da2ee082ce19b8f9056d5b1..88c31b4bf5480212c17caaaf9358b9be47f27fce 100644 --- a/MiniScanner/Features/ScanSession/Data/Repositores/ScanSessionsRepository.swift +++ b/MiniScanner/Features/ScanSession/Data/Repositores/ScanSessionsRepository.swift @@ -184,16 +184,9 @@ extension ScanSessionsRepository { let compressedOriginalImage = ImageCompressManager.compress(image: originalImage) let compressedRenderedImage = ImageCompressManager.compress(image: renderedImage) - let newScannedItem = ScannedItem(originalImage: compressedOriginalImage, - renderImage: compressedRenderedImage, - quad: item.quad, - colorOption: item.colorOption, - type: .local) - - newScannedItem.rotation = item.rotation - newScannedItem.signaturePosition = item.signaturePosition - newScannedItem.size = item.size - newScannedItem.rotate = item.rotate + let newScannedItem = item.createItem(originalImage: compressedOriginalImage, + renderedImage: compressedRenderedImage, + type: .local) if let imageUrl = item.newOriginalImage { try? FileManager.default.removeItem(at: imageUrl) diff --git a/MiniScanner/Managers/ImageCompressManager.swift b/MiniScanner/Managers/ImageCompressManager.swift index 546b0094ee9b949c7fe4b7bb5272d9d9277161ff..c07882abb2e2295928bce3768287fd33ad1e853f 100644 --- a/MiniScanner/Managers/ImageCompressManager.swift +++ b/MiniScanner/Managers/ImageCompressManager.swift @@ -10,9 +10,15 @@ import Foundation class ImageCompressManager { + @Inject private static var deleteScanSessionUseCase: DeleteScanSessionUseCase + class func compress(image: UIImage) -> UIImage { wxCompress(image: image) } + + class func compress(scannedItem: ScannedItem) -> ScannedItem { + wxCompress(scannedItem: scannedItem) + } } extension ImageCompressManager { @@ -20,4 +26,42 @@ 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(), + name: "", + creationDate: .now, + scannedItems: [scannedItem]) + + deleteScanSessionUseCase.execute(with: scanSession) + } } diff --git a/MiniScanner/Supporting Files/Frameworks/CustomWeScan/MultiPageSession/MultiPageScanSession.swift b/MiniScanner/Supporting Files/Frameworks/CustomWeScan/MultiPageSession/MultiPageScanSession.swift index 897ea5d60d4741c095c877f06d0d9af5f3592907..318bc3bfe17cfd426951eb2c891f8578ed14e790 100644 --- a/MiniScanner/Supporting Files/Frameworks/CustomWeScan/MultiPageSession/MultiPageScanSession.swift +++ b/MiniScanner/Supporting Files/Frameworks/CustomWeScan/MultiPageSession/MultiPageScanSession.swift @@ -140,6 +140,27 @@ extension ScannedItem: Equatable { } } +extension ScannedItem { + + func createItem(originalImage: UIImage, + renderedImage: UIImage, + type: ScannedItemType) -> ScannedItem { + + let newScannedItem = ScannedItem(originalImage: originalImage, + renderImage: renderedImage, + quad: quad, + colorOption: colorOption, + type: type) + + newScannedItem.rotation = rotation + newScannedItem.signaturePosition = signaturePosition + newScannedItem.size = size + newScannedItem.rotate = rotate + + return newScannedItem + } +} + public class MultiPageScanSession: Codable { public private(set) var scannedItems:Array<ScannedItem> = [] diff --git a/MiniScanner/Supporting Files/Frameworks/CustomWeScan/Scan/ScannerViewController.swift b/MiniScanner/Supporting Files/Frameworks/CustomWeScan/Scan/ScannerViewController.swift index 81e8dae77528880b8d93303637d7664d1c647643..c5939a6c5bd3eadf756086cde671df24f69521e9 100644 --- a/MiniScanner/Supporting Files/Frameworks/CustomWeScan/Scan/ScannerViewController.swift +++ b/MiniScanner/Supporting Files/Frameworks/CustomWeScan/Scan/ScannerViewController.swift @@ -462,9 +462,16 @@ extension ScannerViewController: RectangleDetectionDelegateProtocol { scannedItem.rotation = self.getCurrentRotationAngle() scannedItem.colorOption = self.options.defaultColorRenderOption - scannedItem.render { (_) in self.updateCounterButton() } - scanSession.add(item: scannedItem) + scannedItem.render { [weak self] _ in + guard let self else { return } + + let compressedScannedItem = ImageCompressManager.compress(scannedItem: scannedItem) + + scanSession.add(item: compressedScannedItem) + + updateCounterButton() + } self.captureSessionManager?.start() }