1 #import "XZViewController.h"
2
3 // 1.分别下载2张图片:大图片、LOGO
4 // 2.合并2张图片
5 // 3.显示到一个imageView身上
6
7 @interface XZViewController ()
8 @property (weak, nonatomic) IBOutlet UIImageView *imageView;
9 @property (nonatomic, strong) UIImage *image1;
10 @property (nonatomic, strong) UIImage *image2;
11 @end
12
13 @implementation XZViewController
14
15 - (void)viewDidLoad
16 {
17 [super viewDidLoad];
18
19 }
20
21 // 2D绘图 Quartz2D
22 // 合并图片 -- 水印
23
24 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
25 { // 方法三 26 // 1.队列组
27 dispatch_group_t group = dispatch_group_create();
28 dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
29
30 // 2.下载图片1
31 __block UIImage *image1 = nil;
32 dispatch_group_async(group, queue, ^{
33 NSURL *url1 = [NSURL URLWithString:@"http://g.hiphotos.baidu.com/image/pic/item/f2deb48f8c5494ee460de6182ff5e0fe99257e80.jpg"];
34 NSData *data1 = [NSData dataWithContentsOfURL:url1];
35 image1 = [UIImage imageWithData:data1];
36 });
37
38 // 3.下载图片2
39 __block UIImage *image2 = nil;
40 dispatch_group_async(group, queue, ^{
41 NSURL *url2 = [NSURL URLWithString:@"http://su.bdimg.com/static/superplus/img/logo_white_ee663702.png"];
42 NSData *data2 = [NSData dataWithContentsOfURL:url2];
43 image2 = [UIImage imageWithData:data2];
44 });
45
46 // 4.合并图片 (保证执行完组里面的所有任务之后,再执行notify函数里面的block)
47 dispatch_group_notify(group, queue, ^{
48 // 开启一个位图上下文
49 UIGraphicsBeginImageContextWithOptions(image1.size, NO, 0.0);
50
51 // 绘制第1张图片
52 CGFloat image1W = image1.size.width;
53 CGFloat image1H = image1.size.height;
54 [image1 drawInRect:CGRectMake(0, 0, image1W, image1H)];
55
56 // 绘制第2张图片
57 CGFloat image2W = image2.size.width * 0.5;
58 CGFloat image2H = image2.size.height * 0.5;
59 CGFloat image2Y = image1H - image2H;
60 [image2 drawInRect:CGRectMake(0, image2Y, image2W, image2H)];
61
62 // 得到上下文中的图片
63 UIImage *fullImage = UIGraphicsGetImageFromCurrentImageContext();
64
65 // 结束上下文
66 UIGraphicsEndImageContext();
67
68 // 5.回到主线程显示图片
69 dispatch_async(dispatch_get_main_queue(), ^{
70 self.imageView.image = fullImage;
71 });
72 });
73 }
74 /** 方法二 */
75 - (void)test2
76 {
77 // 异步下载
78 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
79 // 1.下载第1张
80 NSURL *url1 = [NSURL URLWithString:@"http://g.hiphotos.baidu.com/image/pic/item/f2deb48f8c5494ee460de6182ff5e0fe99257e80.jpg"];
81 NSData *data1 = [NSData dataWithContentsOfURL:url1];
82 self.image1 = [UIImage imageWithData:data1];
83
84 [self bindImages];
85 });
86 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
87 // 2.下载第2张
88 NSURL *url2 = [NSURL URLWithString:@"http://su.bdimg.com/static/superplus/img/logo_white_ee663702.png"];
89 NSData *data2 = [NSData dataWithContentsOfURL:url2];
90 self.image2 = [UIImage imageWithData:data2];
91
92 [self bindImages];
93 });
94 }
95
96 - (void)bindImages
97 {
98 if (self.image1 == nil || self.image2 == nil) return;
99
100 // 3.合并图片
101 // 开启一个位图上下文
102 UIGraphicsBeginImageContextWithOptions(self.image1.size, NO, 0.0);
103
104 // 绘制第1张图片
105 CGF