iOS 图片压缩(小图片压缩无效)

524 阅读1分钟

首先要抛个问题,一个足够小的图片,一个2k的小图标,我只是做了个保存到沙盒的动作,拿出来就是5k,然后用下面的两种方法任意一种,体积会变得更大,恕我这个小白百思不得其解,希望有大佬帮忙解答,万分感谢。

图片压缩的两种通用方式在这里做个简单总结:

1、压,就是体积变小,尺寸不变,所以质量下降了

2、缩,就是尺寸变小,那么像素也减少了,体积也会相应变小

下面的这行代码就是将图片质量降低的方法了。 但是要注意的是,这里的compressionQuality 并不是和压缩后的图片体积成正比的。

UIImageJPEGRepresentation(UIImage * **__nonnull** image, CGFloat compressionQuality);

然后再说把缩小图片尺寸。 一般是需要按比例缩小尺寸的,不然图片会被拉伸变形。

    // 创建一个bitmap的context
    // 并把它设置成为当前正在使用的context
    UIGraphicsBeginImageContextWithOptions(CGSizeMake(width, height), NO, 0.0f);
    if (widthScale > heightScale) {
        [image drawInRect:CGRectMake(0, 0, imageWidth / heightScale, height)];
    } else {
        [image drawInRect:CGRectMake(0, 0, width, imageHeight / widthScale)];
    }
    // 从当前context中创建一个改变大小后的图片
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    // 使当前的context出堆栈
    UIGraphicsEndImageContext();

最后,一般情况下我们会将上面的两种方法结合起来使用,这样效果会更好。附上我看到的大佬做的图片压缩链接:www.jianshu.com/p/041d5a93b…