UIIMAGE压缩,但不调整到最大尺寸



我有以下:

extension UIImage{
func compressToMaxSize(bytes: Int) -> UIImage{
    var data: Data = UIImageJPEGRepresentation(self, 1.0)!
    var compressionRatio: CGFloat = CGFloat(bytes) / CGFloat(data.count)
    while data.count > bytes && compressionRatio > 0{
        data = UIImageJPEGRepresentation(self, compressionRatio)!
        compressionRatio = compressionRatio - 0.05
    }
    return UIImage(data: data)!
}
}

它的确返回的尺寸小于字节参数,但我很可疑,因为压缩大小约为原始的十分之一,即使压缩比约为0.46。我在这里缺少什么?

我在这里缺少什么?

您缺少的是JPEG是什么。

JPEG是有损的。为了实现这种损失,它以特殊的方式编码图像数据 - 例如,在简短的速记中注明了重复像素(相同颜色)之类的东西。压缩的越大,像素将被认为是彼此重复的越多(抛弃了颜色的精确性)。

因此,输出大小取决于图像。它有多详细?有多少颜色重复?无论压缩比如何,只有一种纯色的图像都可以压缩很小。

最新更新