我想将一些图像从tif转换为tif以改变光度解释。
我找到了ImageMagick工具并安装了它,在命令行中,以下命令可以正常工作并完成我想要的工作:
convert my_image.TIF dest.TIF
现在我想从Java程序自动启动它。 我使用Eclipse和ImageMagick 6.8.8.-Q16。在Windows上工作。
我尝试使用JMagick,但我只使用以前的ImageMagick版本,这有转换tifs的问题(每次我得到一个黑色图像,也在命令行)。最新的JMagick-Version for Windows找不到更新的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) { }
无论如何,我完全插入了什么命令,我总是得到错误消息"无效的参数 - dest.tif"为第二个参数。
我发现这篇文章http://www.imagemagick.org/discourse-server/viewtopic.php?f=1&t=19679的问题类似,程序试图使用一些Windows转换功能。 所以我将ImageMagick文件夹添加到我的系统变量中,并在eclipse中添加了一个包含此文件夹的新变量到我的项目构建路径。但我仍然得到同样的错误。 还有其他地方我必须设置路径吗?或者我得到的错误的任何其他解释?
答案 0 :(得分:3)
更新回答2017年3月28日
自 ImageMagick 的第7版以来,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更好。