相关疑难解决方法(0)

如何在Core Graphics中生成RGBA图像?

我正在尝试从文本生成RGBA8图像以用作OpenGL ES 2.0纹理.

+(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;
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,没有CGColorSpaceCreateDeviceRGBA,CGColorSpaceCreateDeviceRGB导致以下错误:

CGBitmapContextCreate: unsupported parameter combination: 8 integer bits/component; 32 bits/pixel; 3-component color space; kCGImageAlphaLast; 448 bytes/row.
Run Code Online (Sandbox Code Playgroud)

我缺少什么来创建OpenGL想要的正确RGBA8格式?

更新:我更改了CGBitmapContextCreatefrom 的最后一个参数kCGImageAlphaNone(当我复制粘贴代码时)kCGImageAlphaLast,这是我错误尝试的几种变体之一.

更新2:UIGraphicsGetImageFromCurrentImageContext() …

iphone opengl-es core-graphics objective-c

7
推荐指数
1
解决办法
2万
查看次数

标签 统计

core-graphics ×1

iphone ×1

objective-c ×1

opengl-es ×1