2013-05-02 70 views
0

我正在將一個SVGA驅動的GUI軟件升級到Qt驅動的軟件。其中一個問題是做顏色轉換。 由於SVGA使用256色模型,而Qt使用RGB色彩模型(實際上它也支持其他模型;但是我使用的是RGB)。因此,我需要256色到等效RGB色彩的線性映射。如何將256色轉換爲最接近的匹配RGB顏色?

有沒有公式可以做到這一點?

注意:我使用C/C++作爲構建語言。

回答

1

您需要計算出正在使用的調色板。這應該在應用程序中進行編碼。調色板是256個RGB值的數組。要使用顏色,請使用數組索引(單個字節)。一旦獲得了調色板信息,就可以獲得您之後的線性映射。

在VGA模式下有一個默認調色板。大多數程序會自行設置,但無論哪種方式,調色板信息都駐留在顯卡上。你應該能夠查詢它,但我無法幫助你。我最後一次編寫任何代碼來做這件事大約是在15年前,當時我們都知道要寫入各種圖形操作的內存地址。

另一種方法來找出調色板:如果你能夠修改應用程序編寫的一組像素,簡單地劃一個包含所有256個色值的16×16塊,得到的截圖,然後恢復從調色板。