c++ - 如何将 18 位色深表示为 16 位色深?

标签 c++ graphics bitmap

我正在移植一个从 16 位色深构建到 18 位色深的软件。如何将 16 位颜色转换为 18 位颜色?谢谢。

最佳答案

在不知道设备的情况下,我只能推测。设备通常是红色、绿色、蓝色,因此每种颜色都会有 6 位变化。这意味着每种颜色有 64 种变化,总共有 262,144 种颜色。

任何位图都可以缩放到此显示。如果您对每个组件(例如,红色)进行归一化,然后乘以 64,您将得到缩放后的版本。

如果您要问其他问题或需要更多详细信息,请询问。

更新:
有两种 16 位位图格式。一种是 5-5-5(每像素 5 位),另一种是 5-6-5(绿色得到额外的位)。为了进行此转换,我将假设为 5-5-5。

对于每个像素中的每种颜色,您需要这样的东西:

NewColor = (oldColor/32.0)*64

这会将旧颜色转换为介于 0.0 和 1.0 之间的数字,然后将其放大到新的值范围。

关于c++ - 如何将 18 位色深表示为 16 位色深?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1056879/

相关文章:

c++ - 如何将 cin 用于数组

c++ - std::less 枚举

java - 使用隐式 Graphics 参数调用 Java 方法,例如 repaint() 或访问 JPanel 中的 Graphics

c++ - 快速 C++ 图形(如编程时间)

android - 不可变位图崩溃错误

c++ - 两个字符串相等

c++ - 为什么在 try block 中初始化文件指针会导致管道损坏?

java - super.paintComponent(g) 是做什么的?

image - 在 mercurial 中处理图像(bmp、png、jpg 等)文件 merge 冲突

android - 如何生成重定向到 URL 的二维码?