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. Retina ディスプレイでは 1 ポイント = 2 ピクセルなので、1 つのタッチ ポイントに対して 2 ピクセルの色を変更する必要があることを知っていますか? どこか間違っている場合は修正してください。
  2. 画像データからこの 2 ピクセルを取得するにはどうすればよいですか?
4

1 に答える 1

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)

これは、画像にアクセスするための正しい座標でなければなりません。残りのステップは、ピクセル データを取得することです。 この投稿は、それを行うための合理的な方法を提供します。(これも個人的には試していません)。

于 2013-03-03T18:52:51.727 に答える