ios-UI高階 GCD佇列組合成圖片
#import "ViewController.h"
@interface ViewController ()
//這個imageView是storyBoard裡面的
@property (weak, nonatomic) IBOutletUIImageView *GruopImageView;
//這兩個是自定義的Image
@property (nonatomic,strong)UIImage *image1;
@property (nonatomic,strong)UIImage *image2;
@end
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
}
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
dispatch_queue_t queue =dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);
dispatch_group_t group =dispatch_group_create();
dispatch_group_async(group, queue, ^{
//獲得image1的圖片地址
NSURL *image1Url = [NSURLURLWithString:@"http://f.hiphotos.baidu.com/image/pic/item/3812b31bb051f8196bc52fa8dfb44aed2f73e774.jpg"];
//載入image1
NSData *data1 = [NSDatadataWithContentsOfURL:image1Url];
self.image1= [UIImageimageWithData:data1];
});
dispatch_group_async(group, queue, ^{
//獲得image2的圖片地址
NSURL *image2Url = [NSURLURLWithString:@"http://photocdn.sohu.com/20151124/mp43786429_1448294862260_4.jpeg"];
//載入image2
NSData *data2 = [NSDatadataWithContentsOfURL:image2Url];
self.image2= [UIImageimageWithData:data2];
});
//合成image1和image2(notify的作用是當它前面的都執行完才執行它)
dispatch_group_notify(group, queue, ^{
//開啟上下文
UIGraphicsBeginImageContext(CGSizeMake(200, 200));
[self.image1drawInRect:CGRectMake(0, 0, 100, 200)];
[self.image2drawInRect:CGRectMake(100, 0, 100, 200)];
//獲得上下文
UIImage *image =UIGraphicsGetImageFromCurrentImageContext();
//結束上下文
UIGraphicsEndImageContext();
//回到主佇列
dispatch_async(dispatch_get_main_queue(), ^{
self.GruopImageView.image = image;
});
});
}
- (void)didReceiveMemoryWarning {
[superdidReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
執行效果:
相關文章
- ios-UI高階 GCD的相關設定iOSUIGC
- ios-UI高階多執行緒 GCD實現單例模式iOSUI執行緒GC單例模式
- RabbitMQ 高階 - 死信佇列MQ佇列
- GCD 併發佇列GC佇列
- GCD裡的全域性佇列GC佇列
- oracle高階佇列在通訊方面的應用設計(AQ高階佇列設計說明二)Oracle佇列
- oracle高階佇列在通訊方面的應用設計(AQ高階佇列設計說明一)Oracle佇列
- 流高階佇列使用者手冊佇列
- Oracle 高階佇列(AQ Advanced Queueing)Oracle佇列
- PHP 圖片、文字合成PHP
- golang 合成的圖片Golang
- GCD之佇列的實現和使用GC佇列
- ios-UI高階 多執行緒的互斥解決iOSUI執行緒
- RabbitMQ學習(三)之 “訊息佇列高階使用”MQ佇列
- RabbitMQ高階之訊息限流與延時佇列MQ佇列
- 流高階佇列使用者手冊總結佇列
- 圖解--佇列、併發佇列圖解佇列
- PHP 圖片合成(2合1)PHP
- PhotosBlender for Mac(圖片合成軟體)Mac
- 阻塞佇列——四組API佇列API
- 任務與佇列 iOS之多執行緒GCD(一)佇列iOS執行緒GC
- 圖片合成工具類(BitmapMergeUtils)
- PaddlePaddle : AI摳圖及圖片合成AI
- iOS 多執行緒--GCD 序列佇列、併發佇列以及同步執行、非同步執行iOS執行緒GC佇列非同步
- RabbitMQ 高可用之映象佇列MQ佇列
- 進階高階IoT架構-教你如何簡單實現一個訊息佇列架構佇列
- Unity從圖片的位元組資料裡面獲取圖片的寬和高Unity
- springmvc中圖片回顯返回位元組流陣列顯示圖片完整案例SpringMVC陣列
- 描述高頻題之佇列&棧佇列
- Mac上圖片合成軟體哪個好?Mac
- JavaScript中的圖片處理與合成(四)JavaScript
- canvas實現二維碼和圖片合成Canvas
- JavaScript中的圖片處理與合成(一)JavaScript
- JavaScript中的圖片處理與合成(二)JavaScript
- GCD中的dispatch_sync、dispatch_sync 分別與序列、並行佇列組合執行小實驗GC並行佇列
- 無需下載軟體怎麼將多張圖片組合成一張圖片
- 按照陣列順序給物件重新組合成新物件陣列物件
- 陣列模擬佇列進階版本——環形佇列(真正意義上的排隊)陣列佇列