ios 上下文划线 画矩形
2018-06-07 本文已影响34人
来敲代码
用视图去承接 或者view
@property (nonatomic, strong) UIImageView *faceRectView; // 用作人脸框
初始化这个视图 大小和图层要和显示的view在同意视图上
// 添加人脸边框
self.faceRectView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, IPHONE_WIDTH, IPHONE_HEIGHT)];
self.faceRectView.contentMode = UIViewContentModeScaleAspectFill;
[self.view addSubview:self.faceRectView];
self.faceRectView.hidden = YES;
显示划线 由于我要显示在相机的layer层 在显示的时候 线程也是用着相机同一个线程 显示回到主线层
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
CGSize imgSize = CGSizeMake(image.size.width, image.size.height);
UIGraphicsBeginImageContextWithOptions(imgSize, NO, 1);
// 获取上下文
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGPoint p1 = CGPointMake(image.size.width - obj.faceInfo.x - obj.faceInfo.width, obj.faceInfo.y);
CGPoint p2 = CGPointMake(image.size.width - obj.faceInfo.x , obj.faceInfo.y);
CGPoint p3 = CGPointMake(image.size.width - obj.faceInfo.x , obj.faceInfo.y + obj.faceInfo.height);
CGPoint p4 = CGPointMake(image.size.width - obj.faceInfo.x - obj.faceInfo.width, obj.faceInfo.y + obj.faceInfo.height);
CGContextMoveToPoint(ctx, p1.x, p1.y);
CGContextAddLineToPoint(ctx, p2.x, p2.y);
CGContextAddLineToPoint(ctx, p3.x, p3.y);
CGContextAddLineToPoint(ctx, p4.x, p4.y);
CGContextAddLineToPoint(ctx, p1.x, p1.y);
CGContextStrokePath(ctx);
UIImage *RectImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
dispatch_async(dispatch_get_main_queue(), ^{
self.faceRectView.image = RectImage;
});
});