我的图像如下所示:
我必须逐个选择所有部件并改变颜色,我尝试了很多方法,但无法解决这个问题。我试过Bezier Path但没有成功。
这是我目前用于根据颜色选择任何部分的代码,然后我将该颜色更改为红色,如下所示:
但问题是我必须改变我所选择的那部分图像的颜色,而不是所有颜色都相同的颜色。
任何想法如何解决这个问题。
- (void) touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event {
UITouch* touch = [touches anyObject];
CGPoint point = [touch locationInView:_bodyImgView]; //where image was tapped
NSLog(@"X = %f \n Y= %f",point.x,point.y);
pickedColor = [self.view colorOfPoint:point image:_bodyImgView.image];
NSString *col = [NSString stringWithFormat:@"%@",pickedColor];
NSLog(@"color %@",pickedColor);
if (![col isEqualToString:@"UIExtendedSRGBColorSpace 0 0 0 0"]) {
UIImage *img = [self.view replaceColor:pickedColor inImage:_bodyImgView.image
withTolerance:25.0];
[_bodyImgView setImage:img];
}
}
colorOfPoint:image
是一种从拾取点提取颜色的方法。
replaceColor:inImage:withTolerance:
是替换拾取颜色的方法。
答案 0 :(得分:0)
您是否需要能够处理任何图像,或者这是一个固定的图像还是您可以预处理的图像之一?理想情况下,您可以创建多个图像,每个图像仅包含一个可选区域(其余部分是透明的)。然后,只需循环遍历图像并找到对应点不透明的图像,并以保持透明度的混合模式填充图像。
如果这不是一个选项,也许您可以执行种子填充来生成蒙版(从点击位置开始搜索并采用任何颜色直到您点击白色像素),然后应用该蒙版然后执行混合模式绘画,只触摸白色像素。
或者,如果您手动将图片移动到种子填充,您可以查看每个像素并手动将颜色应用于它,可能通过确定它包含多少蓝色,然后生成具有该数量的像素蓝色而不是。