2

ウェブサイトに変更があるかどうかを確認するために、6 秒の差がある 2 つのスクリーンショットを作成しようとしています。

しかし、私のコードは、画面を変更せずにテストしても、スクリーンショットは常に異なると言っています。

私は何を間違っていますか?

Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension screensize = toolkit.getScreenSize();
Rectangle rectangle = new Rectangle(0,0,screensize.width,screensize.height);

Robot robot = new Robot();
BufferedImage image1 = robot.createScreenCapture(rectangle); 
System.out.println("screenshot "+i+"");
Thread.sleep(6000);
BufferedImage image2 = robot.createScreenCapture(rectangle);
System.out.println("screenshot "+(i+10)+"");

int x1 = image1.getWidth();
    int x2 = image2.getWidth();
    if ( x1 != x2 ) {
        System.out.println( "Widths are different: " + x1 + " != " + x2 );
        return;
    }

    int y1 = image1.getHeight();
    int y2 = image2.getHeight();
    if ( y1 != y2 ) {
        System.out.println( "Heights are different: " + y1 + " != " + y2 );
        return;
    }

    for ( int x = 0; x < x1; x++ ) {
        for ( int y = 0; y < y1; y++ ){
            int p1 = image1.getRGB( x, y );
            int p2 = image2.getRGB( x, y );
            if ( p1 != p2 ) {
                System.out.println("Pixel is different at x/y " + x + "/" + y + ": " + p1 + " != " + p2 );
                return;
            }
        }
    }

    System.out.println( "Images are identical" );
4

1 に答える 1

5

コードを試してみましたが、Eclipse コンソールでカーソルが点滅しているため、ピクセルが異なります。

次に、アニメーション アイコン (タスク バーのプロセス エクスプローラー) に問題がありました。

最後に、画像が同一であると述べました。

注: マウスは対象外です:

画面から読み取ったピクセルを含むイメージを作成します。この画像にはマウス カーソルは含まれていません。

于 2012-06-13T09:50:45.253 に答える