修改CGImageRef的像素

时间:2010-02-13 14:42:14

标签: iphone uiimage cgimage

我使用以下代码修改图像的像素。 我遇到的问题是图像的颜色是正确的。 你对这个问题有什么看法吗?

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); 

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);

1 个答案:

答案 0 :(得分:0)

尝试使用kCGImageAlphaPremultipliedLast代替kCGImageAlphaPremultipliedFirst