extension UIImage { func resized(to maxSize: CGFloat) -> UIImage? { var size = self.size if size.width <= maxSize && size.height <= maxSize { return self } let scaleFactor = maxSize / max(size.width, size.height) size.width *= scaleFactor size.height *= scaleFactor UIGraphicsBeginImageContext(size) self.draw(in: CGRect(origin: .zero, size: size)) let newImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return newImage } }