JAVA:使用ColorModel替换另一种颜色

时间:2012-03-27 01:26:23

标签: java awt javax.imageio

我需要在图像上用白色替换一种颜色。我读过有关ColorModel和RGBImageFilter.substituteColorModel的内容,但我不太了解。

我想要替代的颜色是: R:113 G:75 B:96

当然,白色是255,255,255。

如果你能给出一个直接的解决方案会很棒,但如果没有,关于如何做到这一点的一些解释也会很棒。我不想只是解决方案,我想了解这些方法和原因。

非常感谢你。

1 个答案:

答案 0 :(得分:1)

在我的公司,我们必须经常在嵌入式显示器上进行这种切换。我们使用索引位图来完成您所说的内容。基本的想法是切换给定索引的调色板,以获得不同的外观和感觉。

使用索引位图的想法是您可以在托盘中使用256种颜色。您可以为调色板中的每个插槽分配所需的任何RGB值。图像本身只是调色板中的索引列表(每个像素的单个字节)。这在CPU和存储受限平台上非常酷(在这里您无法处理解压缩图像,并且无法为全彩色位图节省空间)。您可以制作替代调色板(绿色,黄色,红色等)。您只需切换调色板,图形看起来完全不同。我们使用它可以在小部件上制作非常精细的渐变,可以切换颜色而无需随身携带按钮的每个状态。

要解决索引位图的特定问题,您只需切换调色板并确保在一个调色板中索引为(113,75,96),并在第二个调色板中保存相同的索引(255,255,255)。

IndexColorModel是在AWT开始的好地方。

祝你好运!