Swift 高性能图片圆角裁切
//说明:JPG 图片不支持透明,使用jpg用imageNamed 方法 需要指定扩展名(没放在Assets中)///将给定的图像进行拉伸,并返回‘新的’图像
func avatarImage(image:UIImage,size:CGSize,backColor:UIColor? = UIColor.white,lineColor:UIColor? = UIColor.lightGray) -> UIImage? {
let rect = CGRect(origin: CGPoint(), size: size)
//图像的上下文-内存中开辟地址,跟屏幕无关
/**
参数:
1>size :绘图的尺寸
2>不透明:false (透明) / true(不透明)。 透明会影响性能
3>scale :屏幕分辨率,生成的图片默认使用1.0的分辨率,图像质量不好可以指定0,会选择当前设备的屏幕分辨率
*/
UIGraphicsBeginImageContextWithOptions(size, true, 0)
//0. 背景填充 否则裁切圆角时候会出现裁掉的部分为黑色
backColor?.setFill()
UIRectFill(rect)
//1.实例化一个圆形的路径
let path = UIBezierPath(ovalIn: rect)
//2.进行路径裁切 后续绘图 都会出现在圆形内部,外部干掉
path.addClip()
//3.绘制内切的圆形
lineColor?.setStroke()
path.lineWidth = 2
path.stroke()
//4.取得结果
let result = UIGraphicsGetImageFromCurrentImageContext()
//5.关闭上下文
UIGraphicsEndImageContext()
//6.返回结果
return result
}