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
必须减少截图中颜色的数量以提高效率,但是有什么办法可以阻止它做到这一点吗?
*“将屏幕截图的RGB颜色从原来的颜色改变”*您最初的''是什么意思?什么软件可以生成原始图像?如果它也是“机器人”,那么人们可能会猜测,无论它可能(或不可能)执行哪种优化,都会在不同的调用中保持不变。我之前编写的软件能够成功检测到用“Robot”完成的两个屏幕截图之间“已更改的区域”(例如,出现在其中的GUI)。 – 2011-12-17 02:41:50