压缩图片方式一:
相对比较复杂,通过图形上下文实现
/**
压缩图片
- parameter width: 压缩后希望得到的宽度
- parameter image: 需要压缩的图片
- returns: 压缩后的图片
*/
func scaleImageOfwidth(width: CGFloat, image: UIImage) -> UIImage {
if width > image.size.width {
// 如果传入的图片宽度小于希望压缩后的宽度,原图返回,不再进行压缩
return image
}
// 等比例计算压缩图片后的高度
let height = width / image.size.width * image.size.height
/*
参数1: 大小
参数2: 是否不透明
参数3: 缩放比 (0.0使用当前设备的缩放比)
*/
UIGraphicsBeginImageContextWithOptions(CGSizeMake(width, height), false, 0.0)
// 将image渲染到上下文中
image.drawInRect(CGRect(x: 0, y: 0, width: width, height: height))
// 从图形上下文中获取图片
let scaledDownImg = UIGraphicsGetImageFromCurrentImageContext()
// 关闭图形上下文
UIGraphicsEndImageContext()
return scaledDownImg
}
压缩图片方式二:
相对简单,只需传入需要压缩的图片和压缩比例
得到的二进制数据就是压缩后的数据
func UIImageJPEGRepresentation(image: UIImage, _ compressionQuality: CGFloat) -> NSData?
参数1: 传入需要压缩的图片
参数2: 压缩系数 0 ~ 1
返回值类型: NSData