UIImage压缩但不调整大小

时间:2017-11-23 16:45:05

标签: ios 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)!
}
}

它确实返回一个大小小于bytes参数的UIImage,但我很怀疑,因为压缩的大小约为原始的十分之一,即使压缩率大约为0.46。我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

  

我在这里缺少什么?

你缺少的是JPEG是什么。

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

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