当前位置: 首页 > 面试题库 >

Java将一个BufferedImage与另一个进行比较

步致远
2023-03-14
问题内容

我需要比较两个缓冲图像,看它们是否完全相同。只是说那等于是行不通的。我目前的方法是

                 { 
                 Raster var1 = Img1.getData();    
                 Raster var2 = Img2.getData();

                 int Data1 = (var1.getDataBuffer()).getSize();
                 int Data2 = (var2.getDataBuffer()).getSize();

                 if (Data1 == Data2)
                         {
                         return true;
                         }
                 else 
                           {
                           return false;
                           }
                 }

但这并不能真正起作用。还有什么其他更可靠的方法?


问题答案:

显而易见的解决方案是逐像素比较它们是否相同。

boolean bufferedImagesEqual(BufferedImage img1, BufferedImage img2) {
    if (img1.getWidth() == img2.getWidth() && img1.getHeight() == img2.getHeight()) {
        for (int x = 0; x < img1.getWidth(); x++) {
            for (int y = 0; y < img1.getHeight(); y++) {
                if (img1.getRGB(x, y) != img2.getRGB(x, y))
                    return false;
            }
        }
    } else {
        return false;
    }
    return true;
}


 类似资料:
  • 我有两位版画作家: 我想检查他们是否都打印到同一个文件,但与 或者 没用。此外,我希望能够检查打印作者是否像这两位一样打印到同一个位置,而不是带有文件路径的字符串: 有办法吗?

  • 我有一个类赋值,我需要将一个目标排序到一个二叉树节点中,给定一个根,我需要将它与根进行比较,如果目标小于根的值,则将目标作为左子,或者如果目标大于根的值,则将目标作为右子。 我必须使用给定的方法头和参数,我的代码是这样编写的: 返回以下错误: java:109:错误:二进制运算符“<”的操作数类型不正确 我还尝试了compareTo方法,通过尝试类似于 返回以下错误: binarySearchTr

  • 问题内容: 我是Java的新手,为了实践起见,我试图创建一个十六进制到十进制的数字转换器,因为我已经成功地制作了一个二进制到十进制的转换器。 我遇到的问题基本上是将一个字符串中的给定字符与另一个字符串进行比较。这就是我定义要比较的当前字符的方式: 这是我尝试比较角色的方法: 当我尝试通过仅输入数字(例如12)来运行代码时,它可以工作,但是当我尝试使用“ b”时,会出现一个奇怪的错误。这是运行程序的

  • 我对c语言不太精通,我对 逐个字符遍历char* 正确比较单个字符和另一个字符 给定一个类似“abcda”的字符串,我想计算“a”的数量并返回计数 我也不应该使用strlen() 如何正确地一次比较一个字符?

  • 我想将调用活动与其他活动进行比较,以了解哪个调用了当前活动。我试过: 它不起作用,除了通过在调用意图中传递一个值,我们如何使用或来比较类?