Robot.createScreenCapture меняет цвета - PullRequest
2 голосов
/ 17 декабря 2011

Вот класс, который я написал, чтобы делать скриншоты:

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 Ответ

1 голос
/ 17 декабря 2011

Для справки: пример позволяет щелкнуть и перетащить в точку на рабочем столе, отображая увеличенное изображение окружающего экрана. После захвата цвет отображается во всплывающей подсказке, когда мышь перемещается по захваченному изображению. Я проверил, что результат правильный, используя утилиту на моей платформе. Вы можете сравнить его с вашей программой и результатом.

...