2009-02-18 4 views
16

J'essaie d'obtenir le contexte bitmap avec le code suivant:kCGColorSpaceGenericRGB est obsolète sur iPhone?

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 
} 

Un avertissement dit: 'kCGColorSpaceGenericRGB' is deprecated.

Est-ce que cela signifie que colorSpace est inchangeable? Si cela est vrai, nous ne pourrons pas modifier les données de couleur des images en utilisant colorSpace. Et comment traiter l'image alors?

Répondre

35

L'espace de couleurs générique est obsolète. Au lieu de cela essayez;

CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

+6

merci pour la réponse je t'aime – Unreality