确定CGPoint是否在图像区域内

9
我正在尝试确定一个CGPoint是否在图像的形状内。该图像是一个简单的黑色形状,如下面附上的两个图像。我想创建一个方法来确定CGPoint是否在该形状的黑色区域内。
我认为这需要两个步骤: 1)将图像转换为可以用代码读取的内容(不确定需要使用什么类型的图像处理或如何进行处理); 2)使用该内容作为参考来确定CGPoint是否位于其中。
欢迎提供任何帮助或想法。我以前从未进行过图像处理类型的编码。谢谢! enter image description here

4
您可以创建一个由您控制的数据支持的 CGBitmapContext,以您选择的格式。您可以将其设置为 1x1 上下文,设置 CTM,使您希望测试的点位于原点处,并将图像绘制到上下文中。然后测试您的数据,以查看您是否有一个黑色像素或白色像素。 - Lily Ballard
2
@Kevin Ballard:为什么不把那个作为答案提供呢?听起来像是一个解决方案。 - DarkDust
1
@DarkDust: 因为我不想花时间真正编写一些代码。 - Lily Ballard
1个回答

11

可以参考Ole Begemann的OBShapedButton。其中包含有一个UIImage分类,里面包括了ColorAtPixel方法。猜测这可能是您正在寻找的内容。

然后,您可以使用以下方式获取某像素的UIColor

UIImage *image = [UIImage imageWithCGImage:yourCGImage];
CGPoint point = CGPointMake(pointx,pointy);
UIColor *pixelColor = [image colorAtPixel:point];

为了简化获取RGB值,您还可以查看uicolor-utilities。 使用UIColor-Expanded类别,您可以轻松确定红色和蓝色组件。 如果它们很低(像素很暗),那么测试点在形状内部。

CGFloat redComp = [pixelColor red];
CGFloat blueComp = [pixelColor blue];

BOOL isInsideShape = ((redComp < 0.5) && (blueComp < 0.5));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接