首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >org.im4java.core.CommandException: magick:没有找到可操作的图像

org.im4java.core.CommandException: magick:没有找到可操作的图像
EN

Stack Overflow用户
提问于 2016-10-30 11:58:26
回答 3查看 2.4K关注 0票数 4

我试图比较两个图像位于我的操作系统下的机器。我的操作系统上运行着ImageMagick。我用的是这个方法:

代码语言:javascript
复制
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 1@error/Oper.c/CLIOption/5225上找到操作‘-米制’的图像。

任何帮助都将不胜感激。

EN

回答 3

Stack Overflow用户

发布于 2016-11-11 08:08:16

实际上,这是一个评论,而不是回答,但我不能在这里发表评论。我是im4java的作者,但我目前还没有在我的机器上安装IM 7。如果可能的话,我会尝试升级并获得一些洞察力。

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

另一个解决方法是使用转换命令,类似于-verbose file1.jpg file2.jpg -metric ae -compare diff.jpg

这将创建diff文件,但我的安装并没有将度量标准写入stderr。这可能是ErrorConsumer的问题所在。在这种情况下,ImageMagick必须修复它们的工具(magick只是一个转换的新名称)。

另一种选择是切换到GraphicsMagick。

票数 3
EN

Stack Overflow用户

发布于 2016-11-10 19:07:48

我在linux上也看到了这种情况,但没有看到IMJava版本1.4和ImageMagick 7的windows。

在挖掘和调试之后,我能够通过删除比较文件(一个指向magick的符号链接)来解决这个问题,然后将Magickover比较法复制回来(以摆脱符号链接)。

对于好奇的人来说,还有更多的细节--当im4java准备运行imagemagick命令时,它对命令执行一个File.getCanonicalName (在本例中是'compare'),这个调用将返回'magick‘。因此,im4java运行并使用命令行参数调用magick,该命令行参数比较expects,您将得到youssef报告的异常。上述解决办法使getCanonicalName无法解决“魔术”问题。

编辑以回答Bernhard的问题,因为我也不能评论:如果运行命令行,它会生成错误,因为命令行使用的是“比较”命令。API中所发生的事情是,它使用的是“magick”。例如,“比较-metric AE foo.png bar.png diff.png”有效,但"magick -metric AE foo.png bar.png diff.png“则不会。

票数 2
EN

Stack Overflow用户

发布于 2022-04-09 12:08:59

我今天和ImageMagick7和im4java遇到了同样的问题。这就是我的答案:使用自定义命令代替这些准备好的命令,比如ImageCommand imageCommand = new ImageCommand("magick","compare");而不是CompareCmd compare = new CompareCmd();,因为IM7在IM6命令之前添加了前缀“magick”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40328791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档