这是我写的截屏类:
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
正在更改屏幕截图的原始颜色,因此当我将使用 createScreenCapture
拍摄的图像与另一张图像进行比较时从不工作。
我认为 createScreenCapture
必须减少屏幕截图中的颜色数量才能提高效率,但有什么办法可以阻止它这样做吗?
最佳答案
作为引用,这个example允许人们单击并拖动到桌面上的一个点,显示周围屏幕的放大图像。捕获后,当鼠标在捕获的图像上移动时,颜色会显示在工具提示中。我已经使用我平台上的实用程序验证了结果是正确的。您可以将其与您的程序和结果进行比较。
关于java - Robot.createScreenCapture 正在改变颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8542054/