Хотите вызвать и затем выполнить цикл над командой оболочки Linux из Java - PullRequest
0 голосов
/ 15 августа 2011

Задача : у меня есть куча изображений в формате .rgb, и я хочу преобразовать их в .jpeg

Вместо того, чтобы конвертировать их вручную ("convert -size img0001.rgb img0001.jpeg") с помощью imagemagick, я пытаюсь написать 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 Ответ

3 голосов
/ 15 августа 2011

На самом деле это работа для bash:

#!/bin/bash
for x in img????.rgb; do
    convert -size 1024x1024 "$x" "${x%.rgb}.jpg"
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...