在MAC OS X上渲染后,RGB颜色将显示为BRG

时间:2014-01-09 11:32:50

标签: macos colors quartz-graphics quartz-2d cgcolorspace

当我们尝试渲染图像时,图像会显示在红色和蓝色值互换的位置,

      {

    colorSpace = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB);

        ...

    cgctx = CGBitmapContextCreate (bitmapData,
                                pixelsWide,
                                pixelsHigh,
                                8,      // bits per component
                                bitmapBytesPerRow,
                                colorSpace,
                                kCGImageAlphaPremultipliedLast);

 }

如果我使用kCGImageAlphaPremultipliedFirst而不是kCGImageAlphaPremultipliedLast图像完全不同,现在我找到绿色和红色并且有点互换。

请建议。

1 个答案:

答案 0 :(得分:0)

由于从Bitmap上下文中读取像素的方式,出现了上述颜色失真问题, 建议通过进行以下更改来克服这种情况,

#if __BIG_ENDIAN__ bitmap_info = kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Big; #else bitmap_info = kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Little; #endif