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