在Objective C中,我们如何将脸部模糊成圆形/圆形?
Posted
技术标签:
【中文标题】在Objective C中,我们如何将脸部模糊成圆形/圆形?【英文标题】:In Objective C how can we Blur face in round/circular shape shape? 【发布时间】:2015-09-28 20:13:40 【问题描述】:我正在开发 ios 应用程序,在该应用程序中我从图像中检测面部并模糊面部,我已经实现了矩形形式的模糊面部,但我需要的是模糊圆形面部。我这样做的目的是
-(void)markAfterFaceDetect:(NSArray *)features
for (CIFaceFeature *f in features)
CGRect aRect = f.bounds;
NSLog(@"here is the height of h %f",aRect.size.height);
// aRect.size.height=aRect.size.height+10;
aRect.origin.y = self.viewShow.bounds.size.height - aRect.size.height - aRect.origin.y;
NSLog(@"Height Of the Image Is : == %f",_imageView.image.size.height);
//self.bounds.size
rectFaceDetect = aRect;
UIVisualEffect *blurEffect;
blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
UIVisualEffectView *visualEffectView;
visualEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
visualEffectView.frame = vv.frame;
//visualEffectView.layer.cornerRadius = visualEffectView.frame.size.height/2;
visualEffectView.alpha =0.96;
visualEffectView.tag = markViewTag;
// [self.imageView addSubview:visualEffectView];
CAShapeLayer *mask = [CAShapeLayer layer];
mask.path = [UIBezierPath bezierPathWithOvalInRect:visualEffectView.bounds].CGPath;
visualEffectView.layer.mask = mask;
使用这种方式,我设法将脸部模糊成圆形或圆形,但是当我截取视图的屏幕截图以将模糊图像保存在应用程序数据库中时,它的 Alpha 变为 0,模糊区域变得可见,我正在使用的代码截图是
CGRect rect = viewShow.frame;
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
[viewShow.layer renderInContext:context];
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
这里是截图前后的图片
Now i have used this Category and Achieved this Blur in Rectangular form Image is Attached
现在我有两个问题。 1-我怎样才能只模糊圆形或圆形的脸? 2- 当我以编程方式截取屏幕截图时,为什么 Alpha 变为 0。
所需的模糊看起来像这样
我们将非常感谢您的帮助。
【问题讨论】:
【参考方案1】:使用drawViewHierarchyInRect:afterScreenUpdates: 捕获视图层次结构的屏幕外观。
【讨论】:
以上是关于在Objective C中,我们如何将脸部模糊成圆形/圆形?的主要内容,如果未能解决你的问题,请参考以下文章
当我们在iOS应用程序中使用Objective C输入错误的安全代码时如何显示警报