2009-02-18 7 views
16

मैं निम्नलिखित कोड के साथ बिटमैप संदर्भ पाने के लिए कोशिश कर रहा हूँ:केसीजी कोलोरस्पेस जेनररिक आरजीबी आईफोन पर बहिष्कृत है?

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 
} 

एक चेतावनी का कहना है: 'kCGColorSpaceGenericRGB' is deprecated.

इसका मतलब यह है कि colorSpace अपरिवर्तनीय है? यदि यह सत्य है, तो हम colorSpace का उपयोग कर किसी भी छवि के रंग डेटा को बदलने में असमर्थ होंगे। और फिर छवि को कैसे संसाधित करें?

उत्तर

35

जेनेरिक कलर स्पेस को बहिष्कृत किया गया है। इसके बजाय कोशिश करें;

CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

+6

thx उत्तर के लिए मैं तुमसे प्यार करता हूँ – Unreality