Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 768
Chilly Zhong Avatar asked Feb 18 '09 08:02

Chilly Zhong


1 Answers

The generic color space is deprecated. Instead try;

CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

like image 64
Andrew Grant Avatar answered Oct 14 '22 00:10

Andrew Grant