Contents
  1. 1. UIImage相关扩展
    1. 1.1. 1.裁剪成圆形(头像使用较多)
    2. 1.2. 2.在某些地方加载出来的图片是经过系统渲染过的,该方法是告诉系统不需要渲染加载的图片
    3. 1.3. 3.返回一张抗锯齿图片(本质:在图片周边加一个边框为1的透明像素)

UIImage相关扩展

1.裁剪成圆形(头像使用较多)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
- (instancetype)xmg_circleImage
{
// 1.开启图形上下文
// 比例因素:当前点与像素比例
UIGraphicsBeginImageContextWithOptions(self.size, NO, 0);
// 2.描述裁剪区域
UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, self.size.width, self.size.height)];
// 3.设置裁剪区域;
[path addClip];
// 4.画图片
[self drawAtPoint:CGPointZero];
// 5.取出图片
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
// 6.关闭上下文
UIGraphicsEndImageContext();
return image;
}
+ (instancetype)xmg_circleImageNamed:(NSString *)name
{
return [[self imageNamed:name] xmg_circleImage];
}
@end

2.在某些地方加载出来的图片是经过系统渲染过的,该方法是告诉系统不需要渲染加载的图片

1
2
3
4
+ (instancetype)xmg_circleImageNamed:(NSString *)name
{
return [[self imageNamed:name] xmg_circleImage];
}

3.返回一张抗锯齿图片(本质:在图片周边加一个边框为1的透明像素)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
- (UIImage *)imageAntialias
{
CGFloat border = 1.0f;
CGRect rect = CGRectMake(border, border, self.size.width-2*border, self.size.height-2*border);
UIImage *img = nil;
UIGraphicsBeginImageContext(CGSizeMake(rect.size.width,rect.size.height));
[self drawInRect:CGRectMake(-1, -1, self.size.width, self.size.height)];
img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIGraphicsBeginImageContext(self.size);
[img drawInRect:rect];
UIImage* antiImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return antiImage;
}
Contents
  1. 1. UIImage相关扩展
    1. 1.1. 1.裁剪成圆形(头像使用较多)
    2. 1.2. 2.在某些地方加载出来的图片是经过系统渲染过的,该方法是告诉系统不需要渲染加载的图片
    3. 1.3. 3.返回一张抗锯齿图片(本质:在图片周边加一个边框为1的透明像素)