Frage

Wie itere ich in einem Bitmap -Kontext auf jedem Pixel? Ich habe eine Quelle gefunden, die zu versuchen scheint, dies zu tun, aber es ist irgendwie fehlerhaft. Kann mir jemand sagen, wie ich diesen Code reparieren kann, damit ich die RGBA jedes Pixels itererieren kann?

-(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; 

}

War es hilfreich?

Lösung

Stellen Sie mit cgbitmapContextCreate einen Puffer für Daten bereit, dann sind Ihre Pixel darin.
Sie können dies überprüfen Verknüpfung

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top