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

Posted

技术标签:

【中文标题】在 MAC OS X 上渲染后,RGB 颜色显示为 BRG【英文标题】:RGB colors are getting displayed as BRG after rendering on MAC OS X 【发布时间】:2014-01-09 11:32:49 【问题描述】:

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

      

    colorSpace = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB);

        ...

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

 

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

请指教。

【问题讨论】:

【参考方案1】:

由于从位图上下文中读取像素的方式,会发生上述颜色失真问题, 最好通过以下更改来克服这种情况,

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

【讨论】:

以上是关于在 MAC OS X 上渲染后,RGB 颜色显示为 BRG的主要内容,如果未能解决你的问题,请参考以下文章