当我们项目中有关于图片的功能时,就免不了需要用到图片上传。
但是,我们要认识到,你要上传的图片大小,是否是必须的。当我们确定要上传的图片,只是用在手机端显示,并不是必须使用原图,这时,我们要在上传前,进行图片的压缩。
swift提供了较简单的压缩方法:
var imageData: Data = image.jpegData(compressionQuality: 0.3) ?? Data()
但是,这个方法有个问题,当压缩比例太小时,就会固定在某个极限值,我个人粗略估算,大约是0.02
因此,当图片足够大,而我们只是用来当类似头像来使用时,上述方法就那以满足了。在此,我提供一个另外的方法:将图片重新绘制,以大量减小图片大小
/**
* 等比率缩放
*/
func scaleImage(scaleSize:CGFloat)->UIImage {
let reSize = CGSize(width:self.size.width * scaleSize, height:self.size.height * scaleSize)
return reSizeImage(reSize: reSize)
}
/**
* 重设图片大小
*/
func reSizeImage(reSize:CGSize)->UIImage {
UIGraphicsBeginImageContextWithOptions(reSize,false,UIScreen.main.scale);
self.draw(in: CGRect(x:0, y:0, width:reSize.width, height:reSize.height));
let reSizeImage:UIImage = UIGraphicsGetImageFromCurrentImageContext() ?? UIImage();
UIGraphicsEndImageContext();
return reSizeImage;
}