我正在尝试比较位于我的OS计算机下的两个映像。
我的OS机器上正在运行ImageMagick。
我正在使用这种方法:

public boolean compareImages (String expectedScreenShot, String capturedScreenShot, String pdiffCompare) {
  ProcessStarter.setGlobalSearchPath("/usr/local/bin/");
  CompareCmd compare = new CompareCmd();
  // For metric-output
  IMOperation cmpOp = new IMOperation();
  // Set the compare metric
  cmpOp.metric("AE");
  // Add the expected image
  cmpOp.addImage(expectedScreenShot);
  // Add the current image
  cmpOp.addImage(capturedScreenShot);
  // This stores the difference
  cmpOp.addImage(pdiffCompare);
  try {
     // Do the compare
     compare.run(cmpOp);
     compare.getErrorText();
     return true;
  }
  catch (Exception ex) {
     return false;
  }
   }


我正在使用im4java:1.4.0,但是在运行compare.run(cmpOp);时收到此异常:


  org.im4java.core.CommandException:org.im4java.core.CommandException:
  magick:在CLI arg 1 @处找不到用于“ -metric”操作的图像
  错误/operation.c/CLIOption/5225。


任何帮助,将不胜感激。

最佳答案

实际上,这是评论而不是答案,但是我不允许在这里评论。我是im4java的作者,但是我的计算机上当前未安装IM 7。如果可能,我将尝试进行升级并获得一些见解。

同时,您能否尝试转储生成的命令行(请参阅im4java-docs)并直接尝试该命令行?请发布结果。

另一个解决方法是使用convert-command,类似
转换-verbose file1.jpg file2.jpg -metric ae-比较diff.jpg

这将创建差异文件,但我的安装未将指标写入stderr。这可能是ErrorConsumer遇到的问题。在这种情况下,ImageMagick必须修复其工具(magick只是convert的新名称)。

另一个选择是切换到GraphicsMagick。

10-06 08:59