【问题标题】:ImageMagick Invalid ParameterImageMagick 参数无效
【发布时间】: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


【解决方案1】:

应提供convert.exe的完整路径,如下:

    ProcessBuilder pb = new ProcessBuilder("C:\\Program Files\\ImageMagick-6.9.9-Q16\\convert.exe", "-quality", "85%", assetDetails.getAssetNode().getPath(), assetDetails.getAssetNode().getPath());

【讨论】:

  • 如果您安装了 ImageMagick v7,您可以通过使用 magick 代替 convert 来避免这些问题...
猜你喜欢
  • 2013-04-24
  • 1970-01-01
  • 2017-06-03
  • 2016-07-07
  • 2016-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多