我想将一些图像从tif转换为tif,以更改光度学解释。
我找到了ImageMagick工具并安装了它,在命令行中,以下命令可以正常工作并满足我的要求:
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中的项目构建路径中。但是我仍然遇到同样的错误。还有其他必须设置路径的地方吗?或任何其他解释我得到的错误?
更新的答案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更好。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句