Как получить данные пикселей на основе CGPoint (x, y)? - PullRequest
0 голосов
/ 26 января 2011

есть идеи?Получение данных пикселей на основе координатной точки.

1 Ответ

3 голосов
/ 26 января 2011

Я не проверял это, но оно должно работать. image является UIImage. for проходит по изображению и извлекает значения RGBA для каждого пикселя. Вы можете просто удалить цикл и заменить xx и yy вашей координатой, чтобы получить один пиксель.

CGImageRef imageRef = [image CGImage];
NSUInteger width = CGImageGetWidth(imageRef);
NSUInteger height = CGImageGetHeight(imageRef);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
unsigned char *rawData = malloc(height * width * 4);
NSUInteger bytesPerPixel = 4;
NSUInteger bytesPerRow = bytesPerPixel * width;
NSUInteger bitsPerComponent = 8;
CGContextRef context = CGBitmapContextCreate(rawData, width, height, bitsPerComponent, bytesPerRow, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
CGColorSpaceRelease(colorSpace);

CGContextDrawImage(context, CGRectMake(0, 0, width, height), imageRef);
CGContextRelease(context);

// this loops through all the pixels
for(int yy = 0; yy<height; yy++) {
    for(int xx = 0; xx<width; xx++) {
        int byteIndex = (bytesPerRow * yy) + xx * bytesPerPixel;

        short r = rawData[byteIndex];
        short g = rawData[byteIndex + 1];
        short b = rawData[byteIndex + 2];
        short a = rawData[byteIndex + 3];
    }
}

free(rawData);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...