首先要抛个问题,一个足够小的图片,一个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…