code: public boolean compareOneScreenshot(File baseImg, File targetImg, int rows, int columns) {
  
          boolean match = true;
          BufferedImage[][] baseBfImg = splitImage(baseImg, rows, columns);
          BufferedImage[][] targetBfImg = splitImage(targetImg, rows, columns);
  
          BufferedImage[][] diffImg = new BufferedImage[rows][columns];
          for (int i = 0; i < rows; i++) {
              for (int j = 0; j < columns; j++) {
  
                  byte[] baseImgBytes = toByteArray(baseBfImg[i][j]);
                  byte[] targetImgBytes = toByteArray(targetBfImg[i][j]);
  
                  if (Arrays.equals(baseImgBytes, targetImgBytes)) {
                      diffImg[i][j] = darken(targetBfImg[i][j]);
                  } else {
                      match = false;
                      diffImg[i][j] = targetBfImg[i][j];
                  }
              }
          }
  
          if (match) {
              LOG.info("screenshot.match", targetImg.getName());
          } else {
              LOG.error("screenshot.unmatch", targetImg.getName());
              writeDiffImg(targetImg, diffImg);
          }
  
          return match;
      }
docs: スクリーンショットが一致する場合にtrueを返します。 一致しない場合には差分スクリーンショットを生成します。
  
  @param baseImg
  基準スクリーンショット
  @param targetImg
  比較対象スクリーンショット
  @param rows
  分割行数
  @param columns
  分割列数
  @return スクリーンショットが一致する場合にtrue