2012-09-27 57 views
2

我有一個使用IndexColorModel的BufferedImage來顯示一些使用調色板的圖形數據。然後我使用createGraphics()繪製緩衝區,並且我想將這些數據重新轉換爲一系列索引。但是,我可以找到的所有方法都獲得RGB值,而不是實際的索引值。這看起來有點愚蠢,因爲雖然我只需遍歷我的調色板並找到合適的顏色,但直接獲取值會簡單得多。從IndexColorModel獲取索引?

這甚至可能沒有找到它手動?

回答

1

如果您無法修改/覆蓋createGraphics()方法(因爲屬於沒有源的外部JAR庫),您必須手動找到您的對象。

否則,如果你有機會到createGraphics()源代碼,兩個選擇:

  • 如果某個方法的客戶需要指標爲返回的對象,而其他客戶需要的RGB值返回,你可以建立一個HashMap<Integer, RGB>作爲回報。整數是索引,RGB既可以是Object本身,也可以是像String這樣的原始值。

  • 如果您有效地找到了訪問方法源代碼的方法,並確認該索引是您的進程所需的基本數據,只需返回一個Integer =>索引,以便您可以在O( 1)。