我想将一些图像从 tif 转换为 tif 以更改光度解释。
我找到了 ImageMagick 工具并安装了它,在命令行中,以下命令可以工作并执行我想要的操作:
convert my_image.TIF dest.TIF
现在我想从 Java 程序自动启动它。 我正在 Windows 上工作,使用 Eclipse 和 ImageMagick 6.8.8.-Q16。
我尝试使用 JMagick,但我只能使用以前的 ImageMagick 版本,并且在转换 tifs 时遇到问题(每次我得到黑色图像时,也在命令行中)。最新的 Windows 版 JMagick 未找到较新的 ImageMagick 版本。
所以我尝试使用 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-folder 添加到我的系统变量中,并且还添加了一个包含此文件夹的新变量到我在 eclipse 中的项目构建路径。但我仍然遇到同样的错误。 还有其他地方需要设置路径吗?或者对我收到的错误有任何其他解释吗?
最佳答案
更新答案 2017 年 3 月 28 日
自 ImageMagick v7 起,convert
命令已被 magick
取代,以避免出现此问题。所以...
convert input.tif output.tif
变为magick input.tif output.tif
identify image.jpg
变为magick recognize image.jpg
比较 image.jpg ...
变为magick 比较 image.jpg ...
compose image.jpg ...
变为magick compose image.jpg ...
mogrify image.jpg ...
变为magick mogrify image.jpg ...
原始答案
您可以将 Windows 的内置 convert
程序重命名为 convertntfs
或将 ImageMagick 的 convert
重命名为 IMconvert
。这可能比希望您始终记得在所有计算机上正确设置 PATH 更好。
关于java - 使用运行时 exec 从 Java 调用 ImageMagick Convert,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22402977/