Java 从RGB绘制CMYK颜色

Java 从RGB绘制CMYK颜色,java,graphics,rgb,cmyk,Java,Graphics,Rgb,Cmyk,你好。我有一个像上面这样的屏幕。通过使用滑块,我得到了红色、绿色和蓝色。此外,我还计算了青色、品红、黄色以及CMYK的红、绿、蓝。我的问题是,是否有任何方法可以像图片中的淡紫色一样用java显示CMYK颜色 private void stateChanged() { red= sliderRed.getValue(); green= sliderGreen.getValue(); blue= sliderBlue.getValue(); txt_b

你好。我有一个像上面这样的屏幕。通过使用滑块,我得到了红色、绿色和蓝色。此外,我还计算了青色、品红、黄色以及CMYK的红、绿、蓝。我的问题是,是否有任何方法可以像图片中的淡紫色一样用java显示CMYK颜色

private void stateChanged() {
      red= sliderRed.getValue();
      green= sliderGreen.getValue();
      blue= sliderBlue.getValue();
      txt_background.setBackground(new Color(red, green, blue));
}

在我看来,它类似于java颜色类,有一个用于在cmyk中生成颜色对象的构造函数

所以你最终会得到这样的结果

Color cmykColorValue=新颜色(键入\u CMYK、[cValue、mValue、yValue、kValue],alpha)

其中alpha为0到1的形式,cValue、mValue、yValue、kValue为相应的cmyk值


这将创建一个新的CMYK颜色对象,该对象可以在任何可以使用颜色对象的地方使用。

CMYK颜色构造函数的正确用法如下:

java.awt.Color cmyk = new Color(ColorSpace.getInstance(ColorSpace.TYPE_CMYK), new float [] {cyan,magenta,yellow}, key/alpha);

你的问题不清楚。所有显示器均为RGB。CMYK没有明显的1对1映射,因为该映射取决于许多因素,如渲染点大小、墨水吸收光谱以及改变渲染的所有其他因素。即使这样,也可以有多种方法将RGB映射到CMYK,还有色域方面的考虑。甚至不清楚你想做什么。如果“在java中显示CMYK颜色,如浅紫色”,您的意思是“显示CMYK颜色的外观,但在屏幕上显示”,这完全不可能做到,希望准确。@JimGarrison但我的任务是允许颜色空间从RGB转换为CMYK,从CMYK转换为RGB。另外,实现用户选择颜色的显示。基本上,答案的副本将是来回转换,如链接问题的接受答案中所做的(也在右侧列表中的“相关”下)。然而,请注意@ JimGrason的评论并仔细考虑,但不要期望屏幕上呈现的“CMYK”颜色看起来像打印的颜色。CMYK在RGB显示中毫无意义,充其量只是稍微接近真实颜色。@JimGarrison你说得对,最终它将全部转换为RGB以渲染到屏幕上。在我看来,这项任务似乎是在两者之间转换,而他主要只是把它拉回到屏幕上,以确保转换是正确的。我肯定你是对的,但由于映射和色域问题,“把它拉回到屏幕上以确保转换是正确的”是毫无意义的。它可以在屏幕上看起来“正确”,但在反射媒体上却非常糟糕。。它应该足够近,以便进行快速目视检查。如果他有一个蓝色的rgb从滑块,他运行,通过转换,他不应该得到一个热粉红色绘制CMYK版本的它。比如,你是对的,转换中有不准确的地方,但它很可能“足够接近”