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;
    });
});
上一篇 下一篇

猜你喜欢

热点阅读