Ok, also haben wir die UIImage in einen rawBits-Puffer gebracht (siehe Link in der Originalfrage), dann haben wir die Daten im Puffer nach unseren Wünschen gezwirbelt (dh alle roten Komponenten (jedes 4. Byte) auf 0 gesetzt , als Test), und müssen jetzt eine neue UIImage erhalten, die die gezwirbelten Daten darstellt.
Ich fand die Antwort in Erica Sudan's iPhone Cookbook, Kapitel 7 (Bilder), Beispiel 12 (Bitmaps). Der entsprechende Aufruf war CGBitmapContextCreate() und der entsprechende Code war:
+ (UIImage *) imageWithBits: (unsigned char *) bits withSize: (CGSize)
size
{
// Create a color space
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
if (colorSpace == NULL)
{
fprintf(stderr, "Error allocating color space\n");
free(bits);
return nil;
}
CGContextRef context = CGBitmapContextCreate (bits, size.width,
size.height, 8, size.width * 4, colorSpace,
kCGImageAlphaPremultipliedFirst);
if (context == NULL)
{
fprintf (stderr, "Error: Context not created!");
free (bits);
CGColorSpaceRelease(colorSpace);
return nil;
}
CGColorSpaceRelease(colorSpace);
CGImageRef ref = CGBitmapContextCreateImage(context);
free(CGBitmapContextGetData(context));
CGContextRelease(context);
UIImage *img = [UIImage imageWithCGImage:ref];
CFRelease(ref);
return img;
}
Hoffnung, die Zukunft Website spelunkers nützlich ist!
Schade, dass nicht viele Menschen diese Art von Funktion verwenden, Sie verdienen mehr Kredit dafür. –