Wie kann ich in einem Bitmap -Kontext auf RGBA jedes Pixels iterieren?
-
20-09-2019 - |
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;
}
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