2009-08-30 18 views
3

Ich möchte nur:
Wie NSLog Pixel RGB von einem UIImage?

1) Kopieren Sie die Pixeldaten.
2) Iterate und Ändern jedes Pixel (mir nur zeigen, wie die ARGB Werte wie 255 bis NSLog)
3) erstellen UIImage aus den neuen Pixeldaten

Ich kann die blutige die heraus Details, wenn jemand mir sagen kann, wie ich die RGBA-Werte eines Pixels als 255NLoggen kann. Wie kann ich den folgenden Code ändern, um dies zu tun? Seien Sie speziell Bitte!

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

NSData* pixelData = (NSData*)CGDataProviderCopyData(CGImageGetDataProvider(originalImage.CGImage)); 
uint myLength = [pixelData length]; 

    for(int i = 0; i < myLength; i += 4) { 


     //CHANGE PIXELS HERE 
     /* 
     Sidenote: Just show me how to NSLog them 
     */ 
     //Example: 
     //NSLog(@"Alpha 255-Value is: %u", data[i]); 
     //NSLog(@"Red 255-Value is: %u", data[i+1]); 
     //NSLog(@"Green 255-Value is: %u", data[i+2]); 
     //NSLog(@"Blue 255-Value is: %u", data[i+3]); 
    } 

    //CREATE NEW UIIMAGE (newImage) HERE 

    return newImage;  
} 

Antwort

3

Hat diese Richtung für Sie funktioniert? Ich würde Pixeldaten wie diese:

UInt32 *pixels = CGBitmapContextGetData(ctx); 

#define getRed(p) ((p) & 0x000000FF) 
#define getGreen(p) ((p) & 0x0000FF00) >> 8 
#define getBlue(p) ((p) & 0x00FF0000) >> 16 
// display RGB values from the 11th pixel 
NSLog(@"Red: %d, Green: %d, Blue: %d", getRed(pixels[10]), getGreen(pixels[10]), getBlue(pixels[10])); 
+0

THanks! Das hat geholfen. – RexOnRoids

+4

Sie machen eine Annahme über das Datenformat. Es gibt keine Garantie, dass das Bild 32bpp ARGB ist. –

1

Wenn Sie möchten, um tatsächlich das Bild zu sehen, können Sie Florent Pillets NSLogger verwenden: https://github.com/fpillet/NSLogger

Die Idee ist, Sie den NSLogger Client starten auf Ihrem Desktop, und dann in der App Sie diese nach oben hin aufgemacht sind:

#import "LoggerClient.h" 

und in Ihrem modifyPixels Methode können Sie etwas tun:

LogImageData(@"RexOnRoids",  // Any identifier to go along with the log 
      0,     // Log level 
      newImage.size.width, // Image width 
      newImage.size.height, // Image height 
      UIImagePNGRepresentation(newImage)); // Image as PNG 

Starten Sie den Client auf Ihrem Desktop, und führen Sie die App auf Ihrem iPhone, und Sie werden echte Bilder im Client angezeigt werden. Sehr praktisch zum Debuggen von Bildproblemen wie Spiegeln, Drehen, Farben, Alpha usw.

Verwandte Themen