Изменить цвет пикселя в зависимости от точки касания

Я хочу изменить цвет, в котором пользователь касается изображения. У меня есть код для получения данных изображения, которые приведены ниже

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. Как мы знаем, на дисплее Retina 1 точка = 2 пикселя, поэтому знаю ли я, что нужно изменить цвет 2 пикселей для одной точки касания? Пожалуйста, поправьте меня, если я где-то ошибаюсь?
  2. Как получить эти два пикселя из данных изображения?

person Iducool    schedule 03.03.2013    source источник


Ответы (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)

Это должны быть правильные координаты для доступа к изображению. Остающийся шаг - получить данные пикселей. Этот пост предоставляет разумно выглядящий способ сделать это. (Также не пробовал лично).

person danh    schedule 03.03.2013
comment
Я сделал несколько изменений, чтобы понять суть вашего предложения. Но мы получаем данные изображения для пикселей. Итак, чтобы получить правильный цвет пикселя для определенной точки, мы должны сделать: pixel = CGPointMake (imageLocation.x image.scale, imageLocation.y image.scale). - person Iducool; 08.03.2013
comment
Если мой комментарий кажется уместным, пожалуйста, отредактируйте свой ответ, чтобы я его принял. - person Iducool; 08.03.2013
comment
счастлив редактировать, но не уверен, что понимаю - ваш UIImage имеет свойство, называемое "масштаб"? - person danh; 08.03.2013
comment
да. UIImage имеет встроенную шкалу свойств. - person Iducool; 08.03.2013
comment
ух ты. не знаю, почему я никогда этого раньше не видел! конечно, отредактирую сразу. это хороший совет для меня и для тех, кто найдет этот пост. - person danh; 08.03.2013