如何在iOS SDK中的选定图像区域上应用滤镜/颜色

时间:2014-11-28 07:29:12

标签: ios iphone uiimage core-graphics

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

请参阅下面的图片,以便更好地了解我的需求。看到涂在嘴唇上的颜色非常自然,

enter image description here

4 个答案:

答案 0 :(得分:1)

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

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();

答案 1 :(得分:0)

有多种方法可以执行此操作,其中一种方法可以在此link中提及

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

答案 2 :(得分:0)

您可以拍摄图像然后应用CoreImage滤镜来调整您已定义的遮罩区域内的颜色。

This answer概述了如何执行此操作。让它看起来更自然更适用于学习如何创建对图像执行所需操作的过滤器。

答案 3 :(得分:0)

您需要为特定图像视图执行一些绘图自定义。这是一些SO Q / A.

how to change the color of an individual pixel in uiimage

iPhone : How to change color of particular pixel of a UIImage?