Вот класс, который я написал, чтобы делать скриншоты:
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
должно уменьшать количество цветов на снимках экрана, которые необходимы для большей эффективности, но есть ли способ, которым я могу помешать этому?