如何将颜色打印为RGB

时间:2017-07-22 03:27:12

标签: java colors rgb

如何以RGB格式打印颜色?我正在使用Robot(java.awt)来获取屏幕上随机像素的颜色,我想将其打印为RGB。因此,如果像素是完全红色,则输出应为

rgb(255, 0, 0)

我能做些什么吗?我应该获得单独的红绿蓝值(我该怎么做)?这是我到目前为止所得到的:

public static void main(String[] args) {
    Random rand = new Random();
    Robot r = null;
    int screenHeight = (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight();
    int screenWidth = (int) Toolkit.getDefaultToolkit().getScreenSize().getWidth();

    try {
        r = new Robot();
    } catch (AWTException e) {
        e.printStackTrace();
    }
    Color pixelColor = r.getPixelColor(rand.nextInt(screenHeight), rand.nextInt(screenWidth));
    System.out.println(pixelColor);
    System.exit(0);
}

但它输出了这个(随机例子):

java.awt.Color[r=222,g=228,b=239]

编辑:我也尝试使用getRGB(),但它仍然无效。

    //...
    Color pixelColor = r.getPixelColor(rand.nextInt(screenHeight), rand.nextInt(screenWidth));
    System.out.println(pixelColor.getRGB());
    //...

但它输出(随机示例):

-723724

这些数字是什么意思?

1 个答案:

答案 0 :(得分:4)

让我们先来看一个非常简单的测试

Color color = Color.RED;
System.out.println(color);
System.out.println(color.getRGB());
System.out.println(color.getRed() + ", " + color.getGreen() + ", " + color.getBlue());

哪个输出

java.awt.Color[r=255,g=0,b=0]
-65536
255, 0, 0

第一个是Color对象toString方法,它为您提供有关类和属性的信息,如您所见,red属性为255

第二个是整数打包值(红色,绿色和蓝色(和alpha)属性都打包成一个int值)

显然,最后一个是颜色的每个属性,这似乎就是你实际所追求的。

我认为你应该做的是阅读JavaDocs on the Color class,以便你更好地理解它所提供的信息,而不是随意采取你认为它应该提供的信息