我有一个使用IndexColorModel的BufferedImage来显示一些使用调色板的图形数据。然后我使用createGraphics()
绘制到缓冲区,我想将这些数据转换回一系列指标。但是,我能找到的所有方法都能得到RGB值,而不是实际的索引值。这看起来有点傻,因为虽然我可以只是遍历我的调色板并找到合适的颜色,但直接获取值会更简单。
如果不手动找到它,这是否可行?
答案 0 :(得分:1)
如果您无法修改/覆盖createGraphics()
方法(因为属于没有源的外部JAR库),您实际上必须手动查找对象。
否则,如果您有权访问createGraphics()
源代码,则有两种选择:
如果某些方法客户端需要索引作为返回的对象,而其他客户端需要返回RGB值,则可以构建HashMap<Integer, RGB>
作为返回。整数将是索引,RGB既可以是Object本身,也可以是像String这样的原始值。
如果您有效地找到了访问方法源代码的方法并确认索引是您的流程所必需的基本数据,那么只需返回一个Integer =&gt;索引,以便您可以在O(1)处抓取目标对象。