选择图像ios的不规则部分

时间:2017-09-06 07:05:08

标签: ios objective-c

我的图像如下所示:

enter image description here

我必须逐个选择所有部件并改变颜色,我尝试了很多方法,但无法解决这个问题。我试过Bezier Path但没有成功。

这是我目前用于根据颜色选择任何部分的代码,然后我将该颜色更改为红色,如下所示:

enter image description here

但问题是我必须改变我所选择的那部分图像的颜色,而不是所有颜色都相同的颜色。

任何想法如何解决这个问题。

- (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:是替换拾取颜色的方法。

1 个答案:

答案 0 :(得分:0)

您是否需要能够处理任何图像,或者这是一个固定的图像还是您可以预处理的图像之一?理想情况下,您可以创建多个图像,每个图像仅包含一个可选区域(其余部分是透明的)。然后,只需循环遍历图像并找到对应点不透明的图像,并以保持透明度的混合模式填充图像。

如果这不是一个选项,也许您可​​以执行种子填充来生成蒙版(从点击位置开始搜索并采用任何颜色直到您点击白色像素),然后应用该蒙版然后执行混合模式绘画,只触摸白色像素。

或者,如果您手动将图片移动到种子填充,您可以查看每个像素并手动将颜色应用于它,可能通过确定它包含多少蓝色,然后生成具有该数量的像素蓝色而不是。