2011-12-17 35 views
2

这是我写给采取截图类:Robot.createScreenCapture正在改变颜色

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必须减少截图中颜色的数量以提高效率,但是有什么办法可以阻止它做到这一点吗?

+0

*“将屏幕截图的RGB颜色从​​原来的颜色改变”*您最初的''是什么意思?什么软件可以生成原始图像?如果它也是“机器人”,那么人们可能会猜测,无论它可能(或不可能)执行哪种优化,都会在不同的调用中保持不变。我之前编写的软件能够成功检测到用“Robot”完成的两个屏幕截图之间“已更改的区域”(例如,出现在其中的GUI)。 – 2011-12-17 02:41:50

回答

1

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