2010-02-13 84 views
0

我正在使用以下代碼修改圖像的像素。 我遇到的問題是圖像的顏色不正確。 你對這個問題有什麼想法嗎?修改CGImageRef的像素

CGImageRef inImage = img.CGImage;
CGContextRef ctx;

CFDataRef m_DataRef; 
    m_DataRef = CGDataProviderCopyData(CGImageGetDataProvider(inImage)); 
    UInt8 * m_PixelBuf = (UInt8 *) CFDataGetBytePtr(m_DataRef); 
// Byte tmpByte; 
    int length = CFDataGetLength(m_DataRef); 

    for (int index = 0; index < length; index += 4) 
    { 
    // DO Stuff 

    } 

    ctx = CGBitmapContextCreate(m_PixelBuf, 
           CGImageGetWidth(inImage), 
           CGImageGetHeight(inImage), 
           8, 
           CGImageGetBytesPerRow(inImage), 
           CGImageGetColorSpace(inImage), 
           kCGImageAlphaPremultipliedFirst); 


    CGImageRef imageRef = CGBitmapContextCreateImage (ctx); 
    UIImage* rawImage = [UIImage imageWithCGImage:imageRef]; 

    CGContextRelease(ctx); 

+0

也許你應該告訴你做什麼'DO Stuff'.. Alao,爲什麼不做一個小型實驗並將所有像素設置爲紅色。那麼你可能會發現,如果你正在解決他們錯誤或不。 – 2010-02-13 14:49:22

+0

即使我什麼都不做,圖像被修改。問題不在於處理代碼。 – 2010-02-13 15:33:29

+0

它是如何修改的?顏色通道是否被交換或者圖像是否被扭曲?您是否嘗試將kCGImageAlphaPremultipliedFirst更改爲CGImageGetAlphaInfo()的結果? – Costique 2010-02-13 16:14:49

回答

0

嘗試使用的kCGImageAlphaPremultipliedLast代替kCGImageAlphaPremultipliedFirst