比较JAVA中的图片

时间:2016-04-24 20:29:06

标签: java image-processing

我遇到了一个问题,我试图比较一些图片,如果它们相等,程序会做一些特定的事情。当我在计算机上测试它时,我已经制作了程序就可以比较图片了。 (我跑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);
}

1 个答案:

答案 0 :(得分:0)

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