func compressOriginalImage(_ image: UIImage?, toMaxDataSizeKBytes size: CGFloat) -> Data? {
var data = .uiImageJPEGRepresentation() as? Data
var dataKBytes: CGFloat = Double((data?.count ?? 0)) / 1000.0
var maxQuality: CGFloat = 0.9
var lastData: CGFloat = dataKBytes
while dataKBytes > size && maxQuality > 0.01 {
maxQuality = maxQuality - 0.01
data = .uiImageJPEGRepresentation() as? Data
dataKBytes = Double((data?.count ?? 0)) / 1000.0
if lastData == dataKBytes {
break
} else {
lastData = dataKBytes
}
}
return data
}
网友评论