在 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的主要内容,如果未能解决你的问题,请参考以下文章

尽管使用相同的 RGB,Xcode 仍将颜色渲染为更深的几个阴影

OS X 图形框架能否基于自定义缓冲区实现 60 Hz 渲染?

如何在Mac OS X Yosemite上安装 jdk 1.6 开发环境

Mac OS X 上的 OpenGL 纹理损坏

在 Mac OS X 中最大化或全屏显示窗口后,Java 停止捕获鼠标移动事件

如何配置 Mac OS X 术语以使 git 具有颜色? [关闭]