Chilly Zhong
Chilly Zhong

Reputation: 16783

kCGColorSpaceGenericRGB is deprecated on iPhone?

I'm trying to get bitmap context with the following code:

GContextRef MyCreateBitmapContext (int pixelsWide, int pixelsHigh)
{
    CGContextRef    context = NULL;
    CGColorSpaceRef colorSpace;
    void *          bitmapData;
    int             bitmapByteCount;
    int             bitmapBytesPerRow;

    bitmapBytesPerRow   = (pixelsWide * 4);                          // 1
    bitmapByteCount     = (bitmapBytesPerRow * pixelsHigh);

    colorSpace = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB);// 2
    bitmapData = malloc( bitmapByteCount );                          // 3
    if (bitmapData == NULL)
    {
        fprintf (stderr, "Memory not allocated!");
        return NULL;
    }

    context = CGBitmapContextCreate (bitmapData,                     // 4
                                    pixelsWide,
                                    pixelsHigh,
                                    8,      // bits per component
                                    bitmapBytesPerRow,
                                    colorSpace,
                                    kCGImageAlphaPremultipliedLast);
    if (context== NULL)
    {
        free (bitmapData);                                          // 5
        fprintf (stderr, "Context not created!");
        return NULL;
    }

    CGColorSpaceRelease( colorSpace );                              // 6
    return context;                                                 // 7
}

A warning says:'kCGColorSpaceGenericRGB' is deprecated.

Does this mean that colorSpace is unchangeable? If that is true, we'll be unable to change the color data of any images using colorSpace. And how to process image then?

Upvotes: 16

Views: 9536

Answers (1)

Andrew Grant
Andrew Grant

Reputation: 58786

The generic color space is deprecated. Instead try;

CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

Upvotes: 35

Related Questions