できるだけ早く画像から RBG データを取得する必要があります。私は現在これを行います:
CGRect rect = CGRectMake(roundf(xCoord * self.scale), roundf(yCoord * self.scale), 1, 1);
CGImageRef cropped = CGImageCreateWithImageInRect(self.CGImage, rect);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
unsigned char rawData[UIIMAGE_BYTES_PER_PIXEL];
NSUInteger bytesPerRow = UIIMAGE_BYTES_PER_PIXEL;
NSUInteger bitsPerComponent = 8;
CGContextRef context = CGBitmapContextCreate(rawData, 1, 1,
bitsPerComponent, bytesPerRow, colorSpace,
kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
CGColorSpaceRelease(colorSpace);
CGContextDrawImage(context, CGRectMake(0, 0, 1, 1), cropped);
CGImageRelease(cropped);
CGContextRelease(context);
CGFloat red = rawData[0] / 255.0;
CGFloat green = rawData[1] / 255.0;
CGFloat blue = rawData[2] / 255.0;
CGFloat alpha = rawData[3] / 255.0;
return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
しかし、遅すぎます。
代わりに Open GL テクスチャを使用してこれを行うコード スニペットを持っている人はいますか? 出発点をつかむために GPUImage プロジェクトを調べましたが、この 1 つのことだけのために OpenGL のすべてを学ばなければならないのは圧倒されます。