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

标签 java awt javax.imageio

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

我要替换的颜色是: 回复:113 重力:75 乙:96

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

如果您可以提供直接的解决方案,那就太好了,但如果不能,那么对如何做到这一点进行一些解释也将很棒。我不仅仅想要解决方案,我还想了解其中的原理和原因。

非常感谢你。

最佳答案

在我的公司,我们必须在嵌入式显示器上频繁进行这种切换。我们使用索引位图来完成您正在谈论的事情。基本思想是切换给定索引的调色板以获得不同的外观和感觉。

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

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

IndexColorModel是开始 AWT 的一个好地方。

祝你好运!

关于JAVA:使用 ColorModel 将一种颜色替换为另一种颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9882174/

相关文章:

java - 如何通过内部类itemListener修改类变量?

Java - 将 JFrame 设置为全屏时,屏幕变黑

Java访问框架

java - BufferedImage 比较显示奇怪的行为

如果 url 包含特殊字符,Java ImageIO.read() 会崩溃

java - <? 之间的区别 super T> 和 <?在 Java 中扩展 T>

java - 将两个字符串输入数组后停止重复提示?

java - 需要帮助通过java进程执行postgresql查询

java - java应用程序中的延迟处理

java - 在 Java 中读取 JPEG