没有图片的APP在市面上比较少见,因此在程序开发中关于图片上传的内存问题不得不成为我们关注的焦点. 当遇到高清图片, 如果不对图片进行处理, 一则APP内存暴涨, 二则消耗用户流量过多, 降低用户体验.
图片处理有两种方式:
- 调整图片质量 (不常用)
public func UIImageJPEGRepresentation(image: UIImage, _ compressionQuality: CGFloat) -> NSData?
// 参数1: 需要压缩的图片
// 参数2: 压缩的质量系数
// 返回值为NSData, 接下来把data转为UIImage即可
- 调整图片大小
// 把图片等比例缩放到指定宽度
func scaleToWidth(width: CGFloat)-> UIImage{
if size.width < width{
return self
}
// 图片要缩放的高度
let height = width/size.width * size.height
let rect = CGRect(x: 0, y: 0, width: width, height: height)
// 1. 将图片绘制到指定rect
UIGraphicsBeginImageContext(rect.size)
// 2. 将图片绘制到上下文
drawInRect(rect)
// 3. 从上下文中获取图片
let result = UIGraphicsGetImageFromCurrentImageContext()
// 4. 关闭上下文
UIGraphicsEndImageContext()
return result
}
// 可以把代码块拖到你的UIImage分类中, 涉及到图片缩放, 直接用要缩放的图片调用这个方法即可, so easy O(∩_∩)O !