我試圖弄清CG點是否位於圖像的形狀內。圖像是一個簡單的黑色形狀,如下面的兩個附件。我想創建一個方法來確定CGPoint是否位於該形狀的黑色區域內。確定CGPoint是否在圖像區域
我覺得這需要兩個條件: 1)開啓圖像轉化爲可使用的代碼(不知道這會用什麼樣的圖像處理或如何)
2讀取)使用,作爲參考以確定CGPoint是否在其中。
任何幫助或想法讚賞。我從來沒有做過圖像處理類型的編碼。謝謝!
我試圖弄清CG點是否位於圖像的形狀內。圖像是一個簡單的黑色形狀,如下面的兩個附件。我想創建一個方法來確定CGPoint是否位於該形狀的黑色區域內。確定CGPoint是否在圖像區域
我覺得這需要兩個條件: 1)開啓圖像轉化爲可使用的代碼(不知道這會用什麼樣的圖像處理或如何)
2讀取)使用,作爲參考以確定CGPoint是否在其中。
任何幫助或想法讚賞。我從來沒有做過圖像處理類型的編碼。謝謝!
看看奧萊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));
哇,謝謝你! – Mat 2012-03-04 12:47:35
您可以用您選擇的格式創建一個由您控制的數據支持的'CGBitmapContext'。您可以將其設置爲1x1上下文,設置CTM,以便您希望測試的點位於原點處,並將圖像繪製到上下文中。然後測試您的數據以查看您是否有黑色像素或白色像素。 – 2012-03-04 10:15:56
@凱文巴拉德:爲什麼不提供這個答案?聽起來像一個解決方案。 – DarkDust 2012-03-04 10:17:24
@DarkDust:因爲我不想花時間寫出一些代碼。 – 2012-03-04 22:15:16