我有以下:
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是有损的。为了实现这种损失,它以特殊的方式编码图像数据 - 例如,在简短的速记中注明了重复像素(相同颜色)之类的东西。压缩的越大,像素将被认为是彼此重复的越多(抛弃了颜色的精确性)。
因此,输出大小取决于图像。它有多详细?有多少颜色重复?无论压缩比如何,只有一种纯色的图像都可以压缩很小。