如何将颜色打印为 RGB

How to print color as 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

这些数字是什么意思?

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

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 方法,它为您提供有关 class 和属性的信息,如您所见,red 属性 是 255

第二个是整数打包值(红色、绿色和蓝色(以及 alpha)属性全部打包到一个 int 值中)

显然,最后一个是颜色的每个 属性,这似乎是您真正想要的。

我认为你应该做的是去读一读 JavaDocs on the Color class 这样你就可以更好地理解它提供的信息,而不是随机地挑选你认为它应该提供的内容