用JAVA比较图片

用JAVA比较图片,java,image-processing,Java,Image Processing,我遇到了一个问题,我试图比较一些图片,如果它们相等,程序会做一些特定的事情。当我在电脑上测试它时,我已经在上面制作了程序,比较图片没有问题。(我运行1920x1080)。但当我试图在另一台显示器更小但分辨率相同的计算机上运行相同的程序时,它就不起作用了。第二台计算机仍然比较一张完全相同的东西、大小等的图片。唯一的区别是,它将新拍摄的图片与之进行比较的原始图片是在我的原始计算机上拍摄的。从一台电脑到另一台电脑拍照有什么不同吗?我不知道该怎么解决这个问题。现在我只是拍摄某些像素的照片,并使用pixe

我遇到了一个问题,我试图比较一些图片,如果它们相等,程序会做一些特定的事情。当我在电脑上测试它时,我已经在上面制作了程序,比较图片没有问题。(我运行1920x1080)。但当我试图在另一台显示器更小但分辨率相同的计算机上运行相同的程序时,它就不起作用了。第二台计算机仍然比较一张完全相同的东西、大小等的图片。唯一的区别是,它将新拍摄的图片与之进行比较的原始图片是在我的原始计算机上拍摄的。从一台电脑到另一台电脑拍照有什么不同吗?我不知道该怎么解决这个问题。现在我只是拍摄某些像素的照片,并使用pixelgrabber进行比较

public static boolean processImage(String file1) {

    String file2 = "screencapture.png";

    Image image1 = Toolkit.getDefaultToolkit().getImage(file1);
    Image image2 = Toolkit.getDefaultToolkit().getImage(file2);

    int[] data1 = null;
    int[] data2 = null;

    try {

        PixelGrabber grab1 = new PixelGrabber(image1, 0, 0, -1, -1, false);
        PixelGrabber grab2 = new PixelGrabber(image2, 0, 0, -1, -1, false);

        if (grab1.grabPixels()) {
            int width = grab1.getWidth();
            int height = grab1.getHeight();
            data1 = new int[width * height];
            data1 = (int[]) grab1.getPixels();
        }

        if (grab2.grabPixels()) {
            int width = grab2.getWidth();
            int height = grab2.getHeight();
            data2 = new int[width * height];
            data2 = (int[]) grab2.getPixels();
        }

        System.out.println("Pixels equal: " + java.util.Arrays.equals(data1, data2));

    } catch (Exception e1) {
        e1.printStackTrace();
    }
    return java.util.Arrays.equals(data1, data2);
}

它不起作用的原因不知何故是因为我在另一台计算机上拍摄的照片变得比原来的更亮。但是,还不知道如何修复。

它不起作用的原因不知何故是因为我在另一台计算机上拍摄的照片比原来的要亮。但是,还不确定如何修复。

显示如何比较的代码。在提取像素之前,您没有比较图像的宽度和高度。如果它们不相同,您可能需要根据需要对它们进行缩放和比较。@SureshKoya检查我对以下问题的回答:)显示如何进行比较的代码。在提取像素之前,您没有比较图像的宽度和高度。如果不一样,,您可能希望根据需要对它们进行缩放和比较。@SureshKoya检查我对以下问题的回答:)您可以尝试将原稿中的颜色数限制为256,并在测试计算机中使用相同的颜色数,以避免出现差异。@SureshKoya如何做到这一点?您可以尝试将原稿中的颜色数限制为256原稿,并在测试计算机中使用相同数量的颜色以避免差异。@SureshKoya我该怎么做?