画像を所定のサイズに圧縮

746 ワード

swift 4.2
画像を所定のサイズに圧縮し、計算値を目標値に近づけるように二分法でループします
func compressQuality(_ maxLength:NSInteger,_ cyles:Int = 6) -> Data {
        var compression:CGFloat = 1
        var data = self.jpegData(compressionQuality: compression)!
        if data.count < maxLength {
            return data
        }
        var max:CGFloat = 1
        var min:CGFloat = 0
        var bestData:Data = data
        for _ in 0.. maxLength {
                max = compression
            } else {
                bestData = data
                break
            }
        }
        return bestData
    }