2012-03-04 7 views
9

CGPointが画像の形状内にあるかどうかを調べようとしています。画像は下の2つのような単純な黒い形です。 CGPointがその形状の黒い領域内にあるかどうかを判断するメソッドを作成したいと思います。その参考として 1)何かに画像を回すコード(これは使用する画像処理の種類がわからないか、どのように)CGPointが画像領域内にあるかどうかを確認します

2で読み取ることができます)の使用:

私は、これは二つのことを必要だと思いますCGPointがその中にあるかどうかを判断する。

ありがとうございました。私は前に画像処理の種類のコーディングをしたことはありません。ありがとう!

enter image description here

+4

あなたはあなたが選んだの形式で、あなたがコントロールデータに裏打ちされた 'CGBitmapContext'を作成することができます。 1x1のコンテキストにして、テストする点が原点にあるようにCTMを設定し、イメージをコンテキストに描画することができます。次に、データをテストして、黒いピクセルまたは白いピクセルがあるかどうかを確認します。 –

+2

@ケビン・バラード:答えとしてそれを提供してみませんか?解決策のように聞こえる。 – DarkDust

+1

@DarkDust:実際にコードを書く時間がかかりませんでしたので。 –

答えて

11

オレBegemannのOBShapedButtonを見てみましょう。そこにColorAtPixelメソッドを含むUIImageカテゴリがあります。あなたが探しているものだと思います。

あなたは、その後である画素のUIColorを取得することができます:あなたもuicolor-utilitiesを見て取ることができるRGB値を取得簡素化するために

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

UIColor-Expandedカテゴリを使用すると、単に赤と青の成分を言うと判断できます。それらが低い(ピクセルが暗い)場合、テストされたポイントは内側の形状です。

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

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

うわー、ありがとう! – Mat

関連する問題