java ProcessBuilder无法在Windows上使用Imagemagick

时间:2009-12-30 20:18:06

标签: imagemagick

我正在使用im4java从grails app调用imagemagick。我试图让它使用的命令行是 转换“c:\ ZonesG \ web-app \ spresources \ summarypage_images \ 00 \ 09 \ 18 \ myimage.jpg”-resize 100x100“c:\ ZonesG \ web-app \ spresources \ summarypage_images \ 00 \ 09 \ 18 \ myimage_thumbnail100。 JPG“

或 转换c:\ ZonesG \ web-app \ spresources \ summarypage_images \ 00 \ 09 \ 18 \ myimage.jpg -resize 100x100 c:\ ZonesG \ web-app \ spresources \ summarypage_images \ 00 \ 09 \ 18 \ myimage_thumbnail100.jpg

传递给ProcessBuilder的args看起来是正确的。有以下5个单独的字符串。

转换

C:\ ZonesG \ web应用\ spresources \ summarypage_images \ 00 \ 09 \ 18 \ myimage.jpg

调整大小

100×100

C:\ ZonesG \ web应用\ spresources \ summarypage_images \ 00 \ 09 \ 18 \ myimage_thumbnail100.jpg

当我通过processbuilder运行时,我得到一个错误,即-resize参数无效。这使它看起来好像在调用转换函数,但参数发生了一些事情,因此它不再识别它们。这不是目录中的大肆宣传。我尝试了它到不同的目录,它仍然无法正常工作。

当我从命令行运行它时,它可以很好地工作。

我尝试在两个文件名周围添加双引号。同样,它在命令窗口中运行良好,但在java代码中不起作用。

任何想法?

2 个答案:

答案 0 :(得分:0)

感谢你的评论Jonathan, 与此同时,我发现了正在发生的事情。

  1. 从ProcessBuilder调用时,args的顺序更重要。我更改了它,以便首先调整大小和几何,然后输入图像文件。这使它发挥作用。

答案 1 :(得分:0)

我也有这个错误。这实际上是因为它在Windows中运行一个名为“convert”的Microsoft程序。要让im4java运行正确,您需要创建一个环境变量。例如:IM4JAVA_TOOLPATH = C:\ Program Files(x86)\ ImageMagick-6.6.4-Q16 \