【发布时间】:2018-04-17 10:26:13
【问题描述】:
我正在使用 process 命令来运行 imagemagic,如下所示:
try {
System.out.println(" Image is Processing :: " + assetDetails.getName() + "Original Size :: " + assetDetails.getSize());
ProcessBuilder pb = new ProcessBuilder("convert", "-quality", "85%", assetDetails.getAssetNode().getPath(), assetDetails.getAssetNode().getPath());
pb.redirectErrorStream(true);
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());
session.save();
} catch (final IOException | RepositoryException | InterruptedException ex) {
ex.printStackTrace();
}
我收到一个错误:Invalid Parameter - 85% 并且图像未压缩。但是,如果我从本地运行相同的命令。执行成功。
C:\Users\vdhim6\Desktop\imgcompression>convert -quality 85% source.jpg destination.jpg
C:\Users\vdhim6\Desktop\imgcompression>
【问题讨论】:
-
使用
-quality与命令行相同,而不是-Quality -
也尝试了小 q。同样的错误。
-
这是通过 Microsoft 的 CMD.EXE shell 类型的 Windows-y 环境吗?如果是这样,您可能需要将百分号加倍 (
85%%) 或添加插入符号来转义它 (85^%)。 -
我们需要设置convert.exe的完整路径才能解决这个问题。
标签: java aem processbuilder imagemagick-convert