降低UIImage的质量(压缩它)

时间:2016-01-21 09:26:37

标签: ios swift uiimage

您好我正在尝试压缩UIImage我的代码是这样的:

    var data = UIImageJPEGRepresentation(image, 1.0)
    print("Old image size is \(data?.length) bytes")
    data = UIImageJPEGRepresentation(image, 0.7)
    print("New image size is \(data?.length) bytes")
    let optimizedImage = UIImage(data: data!, scale: 1.0)

打印出来是:

Old image size is Optional(5951798) bytes
New image size is Optional(1416792) bytes

稍后在应用程序中,我将UIImage上传到网络服务器(它首先转换为NSData)。当我检查大小时,它是原始的5951798字节。我在这里做错了什么?

2 个答案:

答案 0 :(得分:2)

UIImage提供图像的位图(未压缩)版本,可用于将图像渲染到屏幕。可以通过降低图像的质量(有效的颜色方差)来压缩图像的JPEG数据,但这仅在JPEG数据中。将压缩的JPEG解压缩到UIImage后,再次需要完整的位图大小(基于颜色格式和图像尺寸)。

基本上,在上传之前,请保持最佳质量的图像以便显示和压缩。

答案 1 :(得分:0)

将此数据发送到服务器 data = UIImageJPEGRepresentation(image,0.7),而不是将 optimizedimage 发送到服务器。

您已将图像压缩为数据。所以它将重复过程(重置为原始大小)。