Swift 高性能图片圆角裁切

2017-12-04  本文已影响0人  Bobo_Ma

//说明: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

}

上一篇下一篇

猜你喜欢

热点阅读