Robot.createScreenCapture正在改变颜色

时间:2011-12-17 02:06:08

标签: java awt screenshot awtrobot

这是我写的截取屏幕的课程:

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位置。这适用于黑白图像但不是彩色的。我遇到的问题是createScreenCapture正在改变屏幕截图的RGB颜色,因此当我将使用createScreenCapture拍摄的图像与其他图像进行比较时,它永远无法正常工作。

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

1 个答案:

答案 0 :(得分:1)

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