可能重复:
How to represent 18bit color depth to 16bit color depth?
我正在将一个由16位色深设备构建的软件移植到18位色深设备?如何表示18位颜色深度?感谢。
答案 0 :(得分:0)
注意:这只是对我之前问题的答案的编辑,因为两者非常相似 - 你只需要改变这个过程。
首先,您必须访问每个颜色分量(即提取R值,G值和B值)。这样做的方式完全取决于颜色存储在内存中的方式。如果它存储为RGB,组件为5-6-5位,则可以使用以下内容:
blueComponent = (colour & 0x3F);
greenComponent = (colour >> 6) & 0x3F;
redComponent = (colour >> 12) & 0x3F;
这将为您提取颜色组件,然后您可以使用上面概述的方法转换每个组件(我假设18位将使用每个组件6位):
blueComponent = (blueComponent / 64.0) * 32;
//greenComponent = (greenComponent / 64.0) * 64; //not needed
redComponent = (redComponent / 64.0) * 32;
请注意,使用上面的代码,使用 64.0 或其他一些方法来确保程序将数字表示为浮点数非常重要。然后将组件组合成18位颜色,使用:
colour = (redComponent << 11) | (greenComponent << 5) | blueComponent;