Objective-C:带有索引ColorSpace的CGBitmapCreateContext

时间:2012-08-15 02:09:08

标签: objective-c cgcontext cgimageref cgcolorspace

我知道文档说CGBitMapContextCreate不支持索引颜色空间。这对我来说很麻烦。我有一堆需要显示的256位PNG文件,它们都是索引颜色空间:

<CGColorSpace 0x101301000> (kCGColorSpaceICCBased; kCGColorSpaceModelRGB; sRGB IEC61966-2.1)

如何将CGImageRef转换为支持的色彩空间,以便我可以使其工作?

这是我的方法,遇到了麻烦:

- (BOOL) renderToBuffer:(void*)baseAddress withBytesPerRow:(NSUInteger)rowBytes pixelFormat:(NSString*)format forBounds:(NSRect)bounds
{

    CGContextRef context = CGBitmapContextCreate(baseAddress, bounds.size.width, bounds.size.height,
                                                 8, rowBytes, CGImageGetColorSpace(img),
                                                 kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);

    CGImageRef imageRef = CGImageCreateWithImageInRect(img, bounds);
    CGContextDrawImage(context, CGRectMake(0, 0, bounds.size.width, bounds.size.height), imageRef);
    CGImageRelease(imageRef);
    CGContextRelease(context);

    return YES;
}

0 个答案:

没有答案