如何用java执行批处理命令(imagemagick)

时间:2014-07-08 10:35:18

标签: java imagemagick

我使用terminal命令使用imagemagick工具将文件夹中的所有图像转换为RGB图像

  

“C:\ Documents and Settings \ admin \ My   文档\的NetBeansProjects \ Archiveindexer \资源\ T0003SathyabamaT \活动\ CBE_2014_03_02_FE_04_MN_IMAGES_CONVERTED”   是我的图片文件夹

终端命令:

 myimagefolder> mogrify -colorspace RGB *.jpg

这很好用。但是当使用java运行它时它无法正常工作

File destpathfinalconv = new File("C:/Documents and Settings/admin/My          Documents/NetBeansProjects/Archiveindexer/T0003SathyabamaT/Active/CBE_2014_03_02_FE_04_MN_IMAGES_CONVERTED");
         ProcessBuilder pb = new ProcessBuilder("mogrify", "-colorspace RGB", destpathfinalconv.toString(),
                     "*.jpg");

      pb.redirectErrorStream(true);

      Process p = pb.start();
      BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
      String line = null;
      while ((line = br.readLine()) != null) {
          System.err.println(line);
      }
      System.err.println("Error "+p.waitFor());
  

系统抛出错误“mogrify.exe:无法识别的选项   `-colorspace RGB'@ error / mogrify.c / MogrifyImageCommand / 4254。错误1“

任何想法请建议。

2 个答案:

答案 0 :(得分:2)

您正在指定' -colorspace RGB'作为单个参数,但它应该是两个参数。您应该将路径和文件以及搜索模式组合到一个参数中。应该像这样调用ProcesBuilder的构造函数:

ProcessBuilder pb = new ProcessBuilder("mogrify", "-colorspace", "RGB",
  destpathfinalconv.toString() + "\\" + "*.jpg");

答案 1 :(得分:0)

试试这个:

   ProcessBuilder pb = new ProcessBuilder(
       "mogrify", 
       "-colorspace",
       "RGB", 
       destpathfinalconv.toString(),
       "*.jpg");

说明:ProcessBuilder中的每个String参数最终都是" word" (根据shell的说法)或结果execve调用中的单独参数。

组合" -colorspace RGB"导致mogrify的单个参数,这是(未知)选项" -colorspace \ RGB"。