damus

nostr ios client
git clone git://jb55.com/damus
Log | Files | Refs | README | LICENSE

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