Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在iOS SDK中对选定图像区域应用过滤器/颜色_Ios_Iphone_Uiimage_Core Graphics - Fatal编程技术网

如何在iOS SDK中对选定图像区域应用过滤器/颜色

如何在iOS SDK中对选定图像区域应用过滤器/颜色,ios,iphone,uiimage,core-graphics,Ios,Iphone,Uiimage,Core Graphics,我有一张我的脸的图像,我只想在嘴唇/眼睛等部位应用一些滤镜或颜色。我已经检测到了这些区域,但我的问题是如何在那里添加颜色,使其看起来自然,并与现有图像混合 请看下图,以便更好地了解我需要什么。看看嘴唇上涂的颜色,这是非常自然的 有多种方法可以做到这一点,其中一种方法如本文所述 另一种方法是,你可以创建一个UIView,大小与你所识别区域的大小相同,使用你想要的任何颜色,并将该视图添加为脸上的子视图。你可以拍摄图像,然后应用CoreImage过滤器来调整你定义的遮罩区域内的颜色 概述了如何做到这一

我有一张我的脸的图像,我只想在嘴唇/眼睛等部位应用一些滤镜或颜色。我已经检测到了这些区域,但我的问题是如何在那里添加颜色,使其看起来自然,并与现有图像混合

请看下图,以便更好地了解我需要什么。看看嘴唇上涂的颜色,这是非常自然的


有多种方法可以做到这一点,其中一种方法如本文所述


另一种方法是,你可以创建一个UIView,大小与你所识别区域的大小相同,使用你想要的任何颜色,并将该视图添加为脸上的子视图。

你可以拍摄图像,然后应用CoreImage过滤器来调整你定义的遮罩区域内的颜色


概述了如何做到这一点。让它看起来更自然只适用于学习如何创建过滤器,对图像执行您想要的操作。

您需要为特定的图像视图进行一些绘图自定义。这里有一些简单的问答


使用以下代码设置给定过滤区域的任何颜色。对于演示,我在这里使用了矩形来绘制,您可以使用任何其他有界区域来填充。这里我用黄色来填充,你也可以改变颜色

UIImage *image=...;//Add Code for getting Main Image
CGRect imageRect = CGRectMake(0.0, 0.0, image.size.width, image.size.height);

UIGraphicsBeginImageContext(image.size);
[image drawInRect:imageRect];
CGContextRef context = UIGraphicsGetCurrentContext();

CGContextSetRGBFillColor(context, 1.0,1.0,0.0,0.5);//set RGBA for color to fill in given area
CGContextSetRGBStrokeColor(context, 1.0, 1.0, 0.0, 1.0);//set RGBA for Border color to add in given area
CGRect rect=CGRectMake(5,5,10,10);//Here, Use the area to be coloured, rightnow i have used Rectangle
CGContextFillRect(context,rect);
CGContextStrokeRectWithWidth(context, rect, 3);//Set Border Width in 3rd argument
CGContextSaveGState(context);

UIImage *newimage = UIGraphicsGetImageFromCurrentImageContext();
[UIImagePNGRepresentation(newimage) writeToFile:FileName] atomically:YES];
UIGraphicsEndImageContext();

这只会在原始图像上添加一层,看起来不自然,我也试过了。我需要一些方法来根据某个位置或帧改变uiimage内像素的颜色。这个问题已经讨论过很多次了。您可以使用CoreImage、GPUFilter、CoreGraphics。。。请先使用搜索…您是在询问如何将过滤器应用于特定区域,还是应该应用哪些过滤器/技术?安娜,我正在尝试更改颜色或为UIImage的像素添加一些过滤器。我已经使用一些矩形在简单图像上添加了过滤器,但这看起来不自然,我需要过滤器在图像的某个特定区域与原始图像自然混合。@MobileDeveloperio和Roid您找到这个问题的解决方案了吗?我面临同样的问题。你能帮我吗?我试过这个,接近我需要的,但不是完美的。看一看我在问题中发布的图片,有更好的想法。在这里,你们必须为那个有界区域创建贝塞尔路径,并用那个矩形替换那个矩形。。。就这样