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