ImageResizer.swift (970B)
1 // 2 // ImageResizer.swift 3 // damus 4 // 5 // Created by Suhail Saqan on 8/5/23. 6 // 7 8 import Foundation 9 import UIKit 10 11 public enum ImageResizingError: Error { 12 case cannotRetrieveFromURL 13 case cannotRetrieveFromData 14 } 15 16 public struct ImageResizer { 17 public var targetWidth: CGFloat 18 19 public init(targetWidth: CGFloat) { 20 self.targetWidth = targetWidth 21 } 22 23 public func resize(at url: URL) -> UIImage? { 24 guard let image = UIImage(contentsOfFile: url.path) else { 25 return nil 26 } 27 28 return self.resize(image: image) 29 } 30 31 public func resize(image: UIImage) -> UIImage { 32 let originalSize = image.size 33 let targetSize = CGSize(width: targetWidth, height: targetWidth*originalSize.height/originalSize.width) 34 let renderer = UIGraphicsImageRenderer(size: targetSize) 35 return renderer.image { (context) in 36 image.draw(in: CGRect(origin: .zero, size: targetSize)) 37 } 38 } 39 } 40