【问题标题】:Calling ImageMagick convert from Java with runtime exec使用运行时 exec 从 Java 调用 ImageMagick 转换
【发布时间】:2014-04-19 14:59:51
【问题描述】:

我想将一些图像从 tif 转换为 tif 以更改光度解释。

我找到了 ImageMagick Tool 并安装了它,在命令行中,以下命令可以正常工作并执行我想要的操作:

 convert my_image.TIF dest.TIF

现在我想从 Java 程序自动启动它。 我正在使用 Eclipse 和 ImageMagick 6.8.8.-Q16 在 Windows 上工作。

我尝试使用 JMagick,但我只能使用以前的 ImageMagick-Version 来使用它,并且在转换 tif 时遇到问题(每次我得到黑色图像时,也在命令行中)。最新的适用于 Windows 的 JMagick-Version 未找到较新的 ImageMagick-Version。

所以我尝试使用 Java Process Builder 或 Runtime exec 命令,例如:

 Process proc = Runtime.getRuntime().exec(new String[]{"convert","my_image.TIF","dest.TIF"});

 ProcessBuilder pb = new ProcessBuilder("convert", "0011D7FE.TIF", "dest.tif");   
 pb.redirectErrorStream(true);   
 try {   
   Process p = pb.start();   
   BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));   
   String line = null;   
   while((line=br.readLine())!=null){   
       System.out.println(line);   
   }   
   System.out.println(p.waitFor());   
  } catch(Exception e) { } 

不管我到底插入了什么命令,我总是收到第二个参数的错误消息“Invalid Param - dest.tif”。

我发现这篇文章http://www.imagemagick.org/discourse-server/viewtopic.php?f=1&t=19679 问题类似并且程序尝试使用一些Windows转换功能。 因此,我将 ImageMagick 文件夹添加到了我的系统变量中,并将一个包含此文件夹的新变量添加到了我在 Eclipse 中的项目构建路径中。但我仍然得到同样的错误。 还有其他地方我必须设置路径吗?或者我得到的错误的任何其他解释?

【问题讨论】:

  • 您可以将 Windows 的内置 convert 程序重命名为 convertntfs 或将 ImageMagick 的 convert 重命名为 IMconvert。这可能比希望您始终记得在所有机器上正确设置 PATH 更好。
  • 谢谢。我将 ImageMagick 的 convert 重命名为 IMconvert,效果很好。
  • 太棒了!我会把它作为答案,希望你可以用一个可爱的绿色大勾号来接受:-)

标签: java eclipse imagemagick runtime.exec imagemagick-convert


【解决方案1】:

2017 年 3 月 28 日更新答案

ImageMagick 的 v7 开始,convert 命令已被 magick 取代,以避免这个问题。所以...

  • convert input.tif output.tif 变为 magick input.tif output.tif
  • identify image.jpg 变为 magick identify image.jpg
  • compare image.jpg ... 变为 magick compare image.jpg ...
  • compose image.jpg ... 变为 magick compose image.jpg ...
  • mogrify image.jpg ... 变为 magick mogrify image.jpg ...

原答案

您可以将 Windows 的内置 convert 程序重命名为 convertntfs 或将 ImageMagick 的 convert 重命名为 IMconvert。这可能比希望您始终记得在所有机器上正确设置 PATH 更好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-07
    • 2012-01-25
    • 2011-04-28
    • 1970-01-01
    • 2010-09-21
    • 2015-11-25
    • 1970-01-01
    • 2014-01-26
    相关资源
    最近更新 更多