Wie generieren Sie eine RGBA-Bild in Core Graphics?

Ich versuche zu generieren, die eine RGBA8 Bild von text zu verwenden, als eine OpenGL-ES-2.0-textur.

+(UIImage *)imageFromText:(NSString *)text
{
  UIFont *font = [UIFont systemFontOfSize:20.0];  
  CGSize size  = [text sizeWithFont:font];

  CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
  CGContextRef contextRef =  CGBitmapContextCreate (NULL,
                                                    size.width, size.height,
                                                    8, 4*size.width,
                                                    colorSpace,
                                                    kCGImageAlphaLast
                                                    );
  CGColorSpaceRelease(colorSpace);
  UIGraphicsPushContext(contextRef);

  [text drawAtPoint:CGPointMake(0.0, 0.0) withFont:font];
  UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

  UIGraphicsPopContext();

  return image;
}

Leider gibt es keine CGColorSpaceCreateDeviceRGBA, und CGColorSpaceCreateDeviceRGB Ergebnisse in die folgende Fehlermeldung:

CGBitmapContextCreate: unsupported parameter combination: 8 integer bits/component; 32 bits/pixel; 3-component color space; kCGImageAlphaLast; 448 bytes/row.

Was bin ich auf die richtigen format RGBA8, dass OpenGL hier will?

Update: ich habe die letzten parameter von CGBitmapContextCreate aus kCGImageAlphaNone (was es war, wenn ich die Kopie eingefügt den code) zu kCGImageAlphaLast, das ist eine von mehreren Varianten, die ich ausprobiert habe, der Fehler.

Update 2: UIGraphicsGetImageFromCurrentImageContext() gibt es nil zurück, wenn der Kontext wurde nicht erstellt, mit UIGraphicsBeginImageContext(), so ist es notwendig, zu extrahieren, die das Bild anders: [UIImage imageWithCGImage:CGBitmapContextCreateImage(contextRef)].

InformationsquelleAutor Ian Terrell | 2011-07-28
Schreibe einen Kommentar