Wie man NSLog Pixel-RGB von einem UIImage?
Frage
Ich möchte nur:
1) Kopieren Sie die Pixeldaten.
2) Iterate und Ändern jedes Pixel (Zeigen Sie mir nur, wie NSLog die ARGB Werte wie 255)
3) Erstellen Sie eine UIImage aus den neuen Pixeldaten
Ich kann das die blutigen Details herauszufinden, ob jemand kann mir sagen, wie zu NSLog der RGBA-Wert eines Pixels als 255. Wie kann ich den folgenden Code ändern, dies zu tun? Seien Sie konkret 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;
}
Lösung
Hat dieser Richtung für Sie arbeiten? 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]));
Andere Tipps
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, starten Sie den NSLogger-Client auf dem Desktop, und dann in Ihrer Anwendung setzen Sie diese nach oben hin nach oben:
#import "LoggerClient.h"
Und in Ihrer modifyPixels
Methode, die Sie so etwas tun können:
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 dem Desktop, und dann die App auf Ihrem iPhone laufen, und Sie werden sehen, reale Bilder im Client angezeigt. Sehr praktisch Bildprobleme wie Flipping, Drehen, Farben, Alpha für das Debuggen, etc.