Java Robot.createScreenCapture正在更改颜色

Java Robot.createScreenCapture正在更改颜色,java,awt,screenshot,awtrobot,Java,Awt,Screenshot,Awtrobot,下面是我写的截图课: public class imagemanipulation { Dimension screenResolution; Rectangle screenRectangle; Robot robot; imagemanipulation() { try { screenResolution = Toolkit.getDefaultToolkit().getScreenSize();

下面是我写的截图课:

public class imagemanipulation {

    Dimension screenResolution;
    Rectangle screenRectangle;
    Robot robot;

    imagemanipulation() {
        try {
            screenResolution = Toolkit.getDefaultToolkit().getScreenSize();
            screenRectangle = new Rectangle(screenResolution);
            robot = new Robot();
        } catch (AWTException ex) {
            Logger.getLogger(imagemanipulation.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public BufferedImage newScreenshot() {
        BufferedImage image = robot.createScreenCapture(screenRectangle);
        return image;
    }

}
我所做的是在从上面截取的屏幕截图上使用
BufferedImagewhatever.getRGB(x,y)
,并将其坐标移到另一个图像的一部分,然后返回找到匹配的x和y位置。这适用于黑白图像,但不适用于彩色图像。我遇到的问题是,
createscreenscapture
改变了屏幕截图的RGB颜色,因此当我将使用
createscreenscapture
拍摄的图像与另一个图像进行比较时,它永远不会起作用


我认为
createScreenCapture
必须减少屏幕截图中的颜色,以提高效率,但有什么方法可以阻止它这样做吗?

作为参考,这允许单击并拖动到桌面上的某个点,显示周围屏幕的放大图像。捕获后,当鼠标在捕获的图像上移动时,颜色将显示在工具提示中。我已经在我的平台上使用实用程序验证了结果是正确的。您可以将其与您的程序和结果进行比较。

“更改屏幕截图的RGB颜色,使其与原来的颜色不同”您所说的“原来”是什么意思?什么软件生成原始图像?如果它也是
机器人
,人们可能会猜测它可能(或可能不)执行的任何优化都会在不同的调用中保持不变。我以前编写过一个软件,它可以成功地在使用
Robot
完成的两个屏幕截图之间检测到“一个区域发生了变化”(例如,其中一个屏幕上出现了一个GUI)。从本质上说,我的问题是,机器人捕获的任何图像似乎都丢失了正确的颜色值。使用robot拍摄的图像中的颜色有轻微的失真,因此由于这种变色,我无法将其与其他图像进行比较。我不知道robot为什么要这么做。在这么多的话中,我看不到一个关于什么软件产生原始图像的答案?发布你的SSCCE,展示你的问题。