【问题标题】:Compare two screenshots doesn't work correctly-java比较两个屏幕截图不能正常工作-java
【发布时间】:2012-06-13 09:36:06
【问题描述】:

我正在尝试制作两张相差 6 秒的截图,看看网站上是否有一些变化。

但我的代码告诉我,屏幕截图总是不同的,即使我在屏幕上没有任何变化的情况下测试它。

我做错了什么?

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" );

【问题讨论】:

  • 代码说什么不同?你有一个非常详细的消息...
  • 在 if (p1!= p2) 块中。 x/y 处的像素不同.....即使屏幕上没有变化
  • @EmrahKarakoc 什么是 x/y 值?这应该可以帮助您比较图像。正如所说,Thilo 可能是一个时钟或其他东西
  • 像素在什么 x/y 坐标上不同?只是一些随机的位置,还是总是在相同的坐标?然后它可以帮助查看那些坐标,那里有什么......(时钟,鼠标动画,发光效果......)
  • 我现在知道原因了 :) 因为我的一个罐子里有一个小弹出窗口,很难看到!感谢您的帮助;)

标签: java image compare screenshot


【解决方案1】:

我尝试了您的代码,但由于 Eclipse 控制台中的光标闪烁,我的像素有所不同。

然后我遇到了动画图标的问题(任务栏中的进程资源管理器)

最后它说图像相同。

注意:鼠标不是这个东西的一部分:

创建包含从屏幕读取的像素的图像。此图像不包括鼠标光标。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-30
    • 2015-01-22
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多