在 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 开发环境