根据触摸点改变像素的颜色

时间:2013-03-03 16:54:13

标签: iphone objective-c image-processing core-graphics quartz-core

我想更改用户触摸图像的颜色。我得到了一些代码来获取低于

的图像数据
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 个答案:

答案 0 :(得分: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提供了一种合理的方式来做到这一点。 (也没有亲自试过)。