我正在尝试比较位于我的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。