版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jacob_ios/article/details/84580807
swift 4.2
将图片压缩到制定的大小,使用二分法进行循环,让计算值接近目标值
func compressQuality(_ image:UIImage, maxLength:NSInteger) -> Data {
var compression:CGFloat = 1
var data = image.jpegData(compressionQuality: compression)!
if data.count < maxLength {
return data
}
var max:CGFloat = 1
var min:CGFloat = 0
for _ in 0..<6 {
compression = (max + min)/2
data = image.jpegData(compressionQuality: compression)!
if Double(data.count) < Double(maxLength)*0.9 {
min = compression
} else if data.count > maxLength {
max = compression
} else {
break
}
}
return data
}