如何在 iOS SDK 中的选定图像区域上应用滤镜/颜色
Posted
技术标签:
【中文标题】如何在 iOS SDK 中的选定图像区域上应用滤镜/颜色【英文标题】:How to apply filters/color on selected image area in iOS SDK 【发布时间】:2014-11-28 07:29:12 【问题描述】:我有一张我的脸的图像,我只想在嘴唇/眼睛等上应用一些滤镜或颜色。我已经检测到这些区域,但我的问题是如何在那里添加颜色,以便看起来自然并与现有的混合图片。
请查看下图以更好地了解我需要什么。看看涂在嘴唇上的颜色非常自然,
【问题讨论】:
这个问题已经讨论过很多次了。可以使用CoreImage、GPUFilter、CoreGraphics...请使用前搜索... 您是在问如何将过滤器应用到特定区域,还是您应该应用哪些过滤器/技术? 安娜,我正在尝试更改颜色或为 UIImage 的像素添加一些过滤器。我使用一些矩形在简单图像上添加了过滤器,但这看起来并不自然,我需要过滤器在图像的某些特定区域看起来与原始图像自然融合。 @MobileDeveloperiosandroid 你有解决这个问题的方法吗?我也面临同样的问题。你能帮帮我吗? 【参考方案1】:使用以下代码为给定的过滤区域设置任何颜色。对于演示,我在这里使用了矩形来绘制,您可以使用任何其他有界区域来填充。这里我用黄色填充,你也可以改变颜色。
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();
【讨论】:
我试过这个,接近我需要的,但不是完美的。看看我在我的问题中发布的图片以获得更好的想法。 在这里你必须为那个有界区域创建贝塞尔路径,并用那个替换矩形......就是这样【参考方案2】:有多种方法可以做到这一点,其中一种可以在link中提到
另一种方法是您可以创建一个与您识别区域的大小相同的 UIView,使用您想要的任何颜色并将该视图添加为面部的子视图。
【讨论】:
只会在看起来不自然的原始图像上添加图层,我也尝试过。我需要一些方法来根据某个位置或框架改变 uiimage 内像素的颜色。【参考方案3】:您可以拍摄图像,然后应用 CoreImage 滤镜来调整您定义的蒙版区域内的颜色。
This answer 概述了如何执行此操作。让它看起来更自然适用于学习如何创建对图像做你想做的过滤器。
【讨论】:
【参考方案4】:您需要为特定的图像视图进行一些绘图自定义。这是一些 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?
【讨论】:
以上是关于如何在 iOS SDK 中的选定图像区域上应用滤镜/颜色的主要内容,如果未能解决你的问题,请参考以下文章
如何更改 iOS7 中的未选定的 tabbaritem 颜色