我想做两件事:比较两种颜色(RGB),以便比较器给我说:如果颜色相同,则为1;如果比较的颜色位于RGB的相对侧(如黑白),则为0;如果某种程度上相等,则从0到1 (就像两个一样)将两种或两种以上的颜色混合在一起以产生新的颜色:将蓝色和黄色混合会给我绿色,将红色和绿色混合会给我黑色等。问题:java API的任何部分都可以为我做类似的事情吗?如果没有的话,有没有第三部分可以帮助您实现这一目标的开源Java库?谢谢。 最佳答案 1。有多种不同的颜色比较方法。如果您想在感知上有所不同,请查看其他用户的评论。如果您只需要简单的指示信息,请使用以下代码:int rgb1 = ...int rgb2 = ...int r, g, b;r = (rgb1 >> 16) & 0x000000ff;g = (rgb1 >> 8) & 0x000000ff;b = rgb1 & 0x000000ff;r -= (rgb2 >> 16) & 0x000000ff;g -= (rgb2 >> 8) & 0x000000ff;b -= rgb2 & 0x000000ff;double answer = (r*r+g*g+b*b)/(255*255*3.0);它计算欧几里得距离,并将其缩放范围为0到1。2。就像有许多种比较颜色的方法一样,有许多种组合颜色的方法。这取决于您想要什么。您可以取平均值,但这不是您想要的。因为它将使所得的颜色变暗。编辑:这是取平均值的代码:r = (rgb1 >> 16) & 0x000000ff;g = (rgb1 >> 8) & 0x000000ff;b = rgb1 & 0x000000ff;r += (rgb2 >> 16) & 0x000000ff;g += (rgb2 >> 8) & 0x000000ff;b += rgb2 & 0x000000ff;int average = ((r/2)<<16)+((g/2)<<8)+(b/2);如果您在数学上有某种倾向,请考虑一下您实际寻找的行为,然后尝试将其放入一个公式中(或者更确切地说是3个公式,一个用于红色,一个用于绿色,一个用于蓝色)将公式转换为Java代码应该不难。您可以使用将单个r,g和b值放回单个rgb值  int rgb =(r 编辑:请注意,计算机使用“红色绿色蓝色”,其中黄色是绿色和蓝色的组合,而不是相反。可以完成转换,但我还没有完成。也许conversion between rgb and ryb color spaces可能有帮助。关于java - 在Java中合并/比较颜色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12397096/
10-10 14:26