1. 程式人生 > >圖片壓縮到制定大小

圖片壓縮到制定大小

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
    }