Вы можете сжать изображение, используя метод jpegData(compressionQuality:)
, чтобы получить размер меньше определенного значения, используя это расширение:
extension UIImage {
func jpegData(sizeLessThan sizeInKB: Double) -> Data? {
var compressionQuality = CGFloat(1)
var compressedData = jpegData(compressionQuality: compressionQuality)
while (Double(compressedData?.count ?? 0) / 1024) > sizeInKB && compressionQuality >= 0 {
compressionQuality -= 0.1
compressedData = jpegData(compressionQuality: compressionQuality)
}
return compressedData
}
}
Использование:
var image: UIImage?
let imageData = image?.jpegData(sizeLessThan: 100)
print(imageData)