Toon posts:

[java] getRuntime().exec(cmd)

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een vreemd probleem met het opstarten van een extern programma vanuit java:
code:
1
2
3
4
String cmd="convert -quality 75 -size 80x80 "+localfile+" -resize 80x80 +profile \"*\" "+tofile;
    try {
      Process p = Runtime.getRuntime().exec(cmd);
....


Als ik exec aanroep geeft het externe programma steeds de volgende foutmelding:
"Invalid Parameter - 75".

Na wat rond gekeken te hebben dacht ik de fout gevonden te hebben. Nu doe ik het zo:

code:
1
2
3
4
String[] cmd=new String[]{"convert", "-quality 75", "-size 80x80", localfile, "-resize 80x80", "+profile \"*\"", tofile};
 try {
      Process p = Runtime.getRuntime().exec(cmd);
....

Maar nog steeds krijg ik de melding "Invalid Parameter - 75"

Als ik het externe programma gewoon vanaf de commandline opstart gaat het prima:
code:
1
convert -quality 75 -size 80x80 s:/usr/local/www/data/public/1122209482.jpg -resize 80x80 +profile "*" e:/docs/thumbs/1122210197125.jpg


Het externe programma is overigens "convert" van imagemagick, maar dat is volgens mij niet van belang.

Weet iemand wat ik fout doe?

Verwijderd

Topicstarter
Slotje maar, op eens of andere manier doet de eerste oplossing het nu wel. 8)7

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 19:30

Robtimus

me Robtimus no like you

Probeer dit eens:
Java:
1
2
3
4
String[] cmd=new String[]{"convert", "-quality", "75", "-size", "80x80", localfile, "-resize", "80x80", "+profile", "\"*\"", tofile};
 try {
      Process p = Runtime.getRuntime().exec(cmd);
....
Dus ook parameter en waarde splitsen. Zoals je het nu doorgeeft is het
code:
1
convert "-quality 75" "-size 80x80" <localfile> "-resize 80x80" "+profile *" <tofile>
Dus de parameter is niet langer -quality met als waarde 75, maar de parameter is "-quality 75". En dat verwacht convert niet.

offtopic:
Is dit trouwens ImageMagick toevallig?

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Verwijderd

Topicstarter
Dank je! ;) Ik vermoed dat er nog een programma met de naam convert is geinstalleerd op m'n computer en dat java dit programma probeerde aan te roepen ipv imagemagicks convert. Het vreemde blijft wel waarom het dan vanaf de commandline wel doet en dat het 30 minuten geleden niet deed en nu wel. Ach, het blijft windows :D