步骤:
0.加载原生图片;
1.获取上下文;
2.绘制原生图片;
3.给原生图片添加文字;
4.获取绘制后的图片;
5.关闭上下文
代码:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//1.加载原生图片
UIImage *image = [UIImage imageNamed:@"高圆圆"];
//2.获取(开启)一个位图上下文,位图上下文与view无关联,所以不需要在drawRect方法中获取
// size:位图上下文的尺寸(新图片的尺寸)
// opaque: 不透明度 YES:不透明 NO:透明,通常我们一般都弄透明的上下文
// scale:通常不需要缩放上下文,取值为0,表示不缩放
UIGraphicsBeginImageContextWithOptions(image.size, NO, 0);
//3.绘制原生图片
[image drawAtPoint:CGPointZero];
NSString *name = @"赵又廷loves高圆圆";
//4.给原生图片添加文字,并且给文字添加相应的属性,例如颜色大小等
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
dict[NSForegroundColorAttributeName] = [UIColor yellowColor];
dict[NSFontAttributeName] = [UIFont systemFontOfSize:14];
[name drawAtPoint:CGPointMake(120, 200) withAttributes: dict];
//5.获取会之后的图片
UIImage *waterMrk = UIGraphicsGetImageFromCurrentImageContext();
self.imageView.image = waterMrk;
//6.关闭上下文
UIGraphicsEndImageContext();
}
原图:
绘制后水印如下图:
目标:裁剪一张圆形图片
步骤:
1. 加载要截取的图片
2. 设置圆形裁剪区域
2.1 创建圆形的路径
2.2 把路径设置为裁剪区域
3. 绘制图片
4. 从上下文中获取图片
5. 关闭上下文
代码:
- (void)viewDidLoad {[super viewDidLoad];
self.view.backgroundColor = [UIColor colorWithWhite:0.819 alpha:1.000];
//0.加载要截取的图片
UIImage *image = [UIImage imageNamed:@"高圆圆"];
//1.获取(开启)图形上下文(该图形上下文是一个正方形)
UIGraphicsBeginImageContextWithOptions(CGSizeMake(image.size.width, image.size.width), NO, 0);
//2.设置圆形裁剪区域,正切于图片
//2.1创建圆形的路径
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, image.size.width, image.size.width) cornerRadius:image.size.width/2];
//2.2把路径设置为裁剪区域
[path addClip];
//3.绘制图片
[image drawAtPoint:CGPointZero];
//4.从上下文中获取图片
UIImage *clipedImage = UIGraphicsGetImageFromCurrentImageContext();
//5.关闭上下文
UIGraphicsEndImageContext();
self.imageView.image = clipedImage;
}
裁剪后如下图:
步骤:
1. 加载原生图片
2. 开启上下文
3. 画大圆并填充路径
4. 设置裁剪区域
5. 绘制图形
6. 获取图片
7. 关闭上下文
代码:
步骤:
1. 加载原生图片
2. 开启上下文
3. 画大圆并填充路径
4. 设置裁剪区域
5. 绘制图形
6. 获取图片
7. 关闭上下文
代码:
- (void)viewDidLoad {
[super viewDidLoad];
//1.加载原生图片
UIImage *image = [UIImage imageNamed:@"高圆圆"];
//self.imageView.image = image;
//图片的宽度和高度
CGFloat imageWH = image.size.width;
//边界宽度
CGFloat border = 1.5;
//圆环的高度和宽度
CGFloat ovalWH = imageWH + 2 * border;
//2.开启上下文
UIGraphicsBeginImageContextWithOptions(CGSizeMake(ovalWH, ovalWH), NO, 0);
//3.画大圆
UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, ovalWH, ovalWH)];
[[UIColor colorWithRed:1.000 green:0.138 blue:0.046 alpha:1.000] set];
[path fill];
//4.设置裁剪区域
UIBezierPath *clipedPath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(border, border, imageWH, imageWH)];
[clipedPath addClip];
//5.绘制图形
[image drawAtPoint:CGPointMake(border, border)];
//6.获取图片
UIImage *clipedImage = UIGraphicsGetImageFromCurrentImageContext();
//7.关闭上下文
UIGraphicsEndImageContext();
self.imageView.image = clipedImage;
}
步骤:
1. 加载原生图片
2. 开启上下文
3. 画大圆并填充路径
4. 设置裁剪区域
5. 绘制图形
6. 获取图片
7. 关闭上下文
代码:
裁剪后的图形:
步骤:
1. 加载原生图片
2. 开启上下文
3. 画大圆并填充路径
4. 设置裁剪区域
5. 绘制图形
6. 获取图片
7. 关闭上下文
代码: