2012-09-27 56 views
2

我有一个使用IndexColorModel的BufferedImage来显示一些使用调色板的图形数据。然后我使用createGraphics()绘制缓冲区,并且我想将这些数据重新转换为一系列索引。但是,我可以找到的所有方法都获得RGB值,而不是实际的索引值。这看起来有点愚蠢,因为虽然我只需遍历我的调色板并找到合适的颜色,但直接获取值会简单得多。从IndexColorModel获取索引?

这甚至可能没有找到它手动?

回答

1

如果您无法修改/覆盖createGraphics()方法(因为属于没有源的外部JAR库),您必须手动找到您的对象。

否则,如果你有机会到createGraphics()源代码,两个选择:

  • 如果某个方法的客户需要指标为返回的对象,而其他客户需要的RGB值返回,你可以建立一个HashMap<Integer, RGB>作为回报。整数是索引,RGB既可以是Object本身,也可以是像String这样的原始值。

  • 如果您有效地找到了访问方法源代码的方法,并确认该索引是您的进程所需的基本数据,只需返回一个Integer =>索引,以便您可以在O( 1)。