想从Java调用然后循环一个linux shell命令

时间:2011-08-14 23:36:39

标签: linux shell loops imagemagick

任务:我有一堆名为.rgb的图片,我想将它们转换为.jpeg

我没有使用imagemagick手动转换它们(“convert -size img0001.rgb img0001.jpeg”),而是试图编写一个为我做的java程序。

我正在使用Linux机器。

问题:我的程序只将第一个.rgb图像转换为.jpeg,但完全忽略了循环命令p = Runtime.getRuntime().exec(cmd1);

public class RbgConvertor {

    public static void main(String[] args) throws IOException {

        int n = Integer.parseInt(args [0]); // Number of pictures
        String size = "1024x1024"; // Size image
        String Path = "/home/nox/grbcode0000/"; // Image Directory
        Process p; // buidiling a proces for "Runtime"

        //I use a for loop as I have about an hundred of .rbg, 
        for (int i = 0; i <= n; i++) {
            String[] cmd1  = {"bash",
                      "convert",
                      "-size", size,
                      Path,args[1],"0",""+(i+1),".rbg", //The "0" and (i+1) are to cope with the images being named img0001 etc.
                      Path,args[1],"0",""+(i+1),".jpeg"} ;  



            p = Runtime.getRuntime().exec(cmd1);


        }// End If

        }//End For

    }//End Main

由于这是我的第一篇文章,所以我希望我能够清楚地解释我的问题...随时留下关于“如何正确提出问题”的反馈意见!

1 个答案:

答案 0 :(得分:3)

这实际上是bash的工作:

#!/bin/bash
for x in img????.rgb; do
    convert -size 1024x1024 "$x" "${x%.rgb}.jpg"
done