Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何以RGB格式打印颜色_Java_Colors_Rgb - Fatal编程技术网

Java 如何以RGB格式打印颜色

Java 如何以RGB格式打印颜色,java,colors,rgb,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

如何以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);
}
但它输出以下内容(随机示例):


编辑:我也尝试过使用
getRGB()
,但仍然不起作用

    //...
    Color pixelColor = r.getPixelColor(rand.nextInt(screenHeight), rand.nextInt(screenWidth));
    System.out.println(pixelColor.getRGB());
    //...
但它输出(随机示例):


这些数字意味着什么?

让我们从一个非常简单的测试开始

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

第二个是整数压缩值(红色、绿色和蓝色(以及alpha)属性都压缩到单个
int
值中)

最后一个是,很明显,颜色的每一个单独属性,这似乎就是你真正想要的


我认为你应该做的是,去读一读,这样你就能更好地理解它提供的信息,而不是随机地尝试一下你认为它应该提供的内容

你可以用
pixelColor.r
,用g替换r,或者用b替换绿色和蓝色“这些数字是什么意思?”这意味着它是一个整型压缩值(RGB(a))值,压缩到一个
int
-你可以得到单独的颜色成分(即
getRed
getGreen
getBlue
),这将给你颜色的单独成分,这基本上就是你的第二个输出saying@KeithM我刚试过,这对我来说不起作用。我还尝试了
pixelColor.getRGB().r
,但没有luck@KeithM基于
Robot\getPixelColor
@MadProgrammer的返回值,我有点好奇您认为使用了什么API,我想到了我使用过的其他Java库,它们提供了一个color类,它只是
color.r/g/b
对一个垃圾问题的非常好的、信息丰富的回答+1@MadPhysicist遗憾的是,我们没有一个“阅读文档”的接近选项:我们尽管这样做:离题,因为:要求我们推荐或查找一本书、工具、软件库、教程或其他非现场资源的问题是离题的,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,请描述问题以及迄今为止为解决问题所做的工作。“我懒得看文档”在我的书中被视为对异地资源的请求,即使OP没有意识到这是他们有时提出的请求。
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