1

我想更改用戶在圖像上觸摸的顏色。我得到了一些代碼來獲取圖像數據低於根據觸摸點更改像素的顏色

NSString * path = [[NSBundle mainBundle] pathForResource:@"filename" ofType:@"jpg"]; 
UIImage * img = [[UIImage alloc]initWithContentsOfFile:path]; 
CGImageRef image = [img CGImage]; 
CFDataRef data = CGDataProviderCopyData(CGImageGetDataProvider(image)); 
const unsigned char * buffer = CFDataGetBytePtr(data); 

我知道我可以很容易地觸摸點,但我的問題是下面

  1. 正如我們所知道的視網膜顯示1點= 2像素所以,我知道是否需要爲單點觸摸點更改2像素的顏色?請糾正我,如果我哪裏錯了?
  2. 如何從圖像數據中獲取這兩個像素?

回答

1

將手勢識別器添加到呈現圖像的UIImageView中。當該識別器被觸發時,你所關心的將是位置...

// self.imageView is where you attached the recognizer. This == gestureRecognizer.view 
CGPoint imageLocation = [gestureRecognizer locationInView:self.imageView]; 

解決這個位置的像素位置獨立設備可以通過確定圖像的比例因子來完成。

爲了獲取圖像的位置,該換算係數適用於手勢位置...

CGPoint pixel = CGPointMake(imageLocation.x*image.scale, imageLocation.y*image.scale) 

這應該是用於訪問圖像正確的座標。剩下的步驟是獲取像素數據。 This post提供了一個合理的方式來做到這一點。 (也沒有親自嘗試過)。

+0

根據您的建議,我已經做了一些更改以獲得重點。但是我們正在獲取像素的圖像數據。因此,爲了獲得某個點的正確像素顏色,我們必須這樣做:pixel = CGPointMake(imageLocation.x * image.scale,imageLocation.y * image.scale)。 – Iducool 2013-03-08 16:28:05

+0

如果我的評論看起來合適,請按照此編輯您的答案,以便我接受。 – Iducool 2013-03-08 16:28:50

+0

很高興編輯,但不知道我明白 - 你的UIImage有一個叫'scale'的屬性? – danh 2013-03-08 16:40:06