java - 使用 ProcessBuilder 运行 ImageMagick 命令

标签 java imagemagick processbuilder

我正在尝试从 Java 类运行一个简单的 ImageMagick 命令,因为我只需要运行几个我认为不使用 Im4Java 的命令,我可以直接使用 ProcessBuilder.start()。 我正在使用以下代码-

ProcessBuilder pb = new ProcessBuilder("convert","pic2.png","pic52.png");
          pb.directory(new File("/user/gaurav_kl"));
         pb.start();

但是我得到了错误 IOException - 无法运行程序“转换”(在目录“/user/gaurav_kl”中):错误=2,没有这样的文件或目录 可能是什么原因。 当我从终端运行相同的命令时,它可以在任何目录中正常工作,因为 IM 已添加到类路径中

最佳答案

ProcessBuilder 在搜索命令可执行文件时的行为取决于系统/jvm。虽然您可能期望它使用与底层 shell(即 BASH)相同的逻辑,但在 documentation 中并不能保证这一点。 .

根据您(和其他人)的经验,最好提供完整的命令路径。例如:

String IMGK_PATH="/usr/local/magick/bin";
ProcessBuilder pb = new ProcessBuilder(IMGK_PATH + "/convert","pic2.png","pic52.png");
pb.directory(new File("/user/gaurav_kl"));
pb.start();

关于java - 使用 ProcessBuilder 运行 ImageMagick 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10079098/

相关文章:

java - 在 java 中处理 XACML 策略

php - imagemagick convert.exe 错误

ruby-on-rails - 'identify'命令无法识别图像文件。 (heroku)

java - 为什么我的答案是无穷大

java - 使用 Java 检测编码

java - 自定义登录页面 Spring Security 的 403 错误

ubuntu - 如何更新对现有 ImageMagick 的依赖

java - 在java中使用进程生成器运行批处理文件时出现奇怪的问题

java - bash 命令使用 java process builder 复制文件

java - 由ProcessBuilder创建的进程不会终止