【问题标题】:How to convert an 256 color to the closest matching RGB color?如何将 256 色转换为最匹配的 RGB 颜色?
【发布时间】:2013-05-02 21:45:57
【问题描述】:

我正在将 SVGA 驱动的 GUI 软件升级到 Qt 驱动的软件。问题之一是进行颜色转换。 由于 SVGA 使用 256 色模型,而 Qt 使用 RGB 颜色模型(实际上它也支持其他模型;但我使用的是 RGB)。因此我需要 256 色到等效 RGB 颜色的线性映射。

有什么公式可以做到这一点吗?

注意:我使用 C/C++ 作为构建语言。

【问题讨论】:

    标签: c rgb xterm vga 256color


    【解决方案1】:

    您需要确定正在使用的调色板。这应该在应用程序中进行编码。调色板是 256 个 RGB 值的数组。要使用颜色,请使用数组索引(单个字节)。获得调色板信息后,您就拥有了您所追求的线性映射。

    VGA 模式中有一个默认调色板。大多数程序都会自己设置,但无论哪种方式,调色板信息都驻留在显卡上。您应该可以查询它,但我无法帮助您。我上一次编写任何代码来执行此操作是在大约 15 年前,当时我们都知道要为各种图形操作写入哪些内存地址。

    另一种查找调色板的方法:如果您能够修改该应用程序以写入一堆像素,只需绘制一个包含所有 256 个颜色值的 16x16 块,获取屏幕截图,然后从中恢复调色板。

    【讨论】:

      猜你喜欢
      • 2012-09-30
      • 2019-02-08
      • 2010-09-26
      • 2011-08-25
      • 1970-01-01
      • 2021-12-14
      • 2018-06-16
      • 2011-05-05
      • 2013-12-10
      相关资源
      最近更新 更多