Как я могу перебрать RGBA КАЖДОГО пикселя в контексте растрового изображения? - PullRequest
0 голосов
/ 29 августа 2009

Как перебрать КАЖДЫЙ ПИКСЕЛ в растровом контексте? Я нашел какой-то источник, который, кажется, пытается это сделать, но он каким-то образом ошибочен. Может кто-нибудь сказать мне, как исправить этот код, чтобы я мог перебирать RGBA каждого пикселя?

-(UIImage*)modifyPixels:(UIImage*)originalImage
{

NSData* pixelData = (NSData*)CGDataProviderCopyData(CGImageGetDataProvider(originalImage.CGImage));
void* pixelBytes = [pixelData bytes];

// Take away the red pixel, assuming 32-bit RGBA
for(int i = 0; i < [pixelData length]; i += 4) {

      bytes[i] = 0; // red
      bytes[i+1] = bytes[i+1]; // green
      bytes[i+2] = bytes[i+2]; // blue
      bytes[i+3] = bytes[i+3]; // alpha
    }

    NSData* newPixelData = [NSData dataWithBytes:pixelBytes length:[pixelData length]];
    UIImage* newImage = [UIImage imageWithData:newPixelData]; 

    return newImage; 

}

1 Ответ

2 голосов
/ 29 августа 2009

с CGBitmapContextCreate, предоставьте буфер для данных, тогда ваши пиксели будут в нем.
Вы можете проверить эту ссылку

...