in reply to system call to ImageMagick with many parameters fails

You don't show us your surrounding Perl code, but I assume you're using something like the following:

#!/usr/bin/perl -w use strict; my $thumbNail1 = 'test_1.jpg'; my $thumbNail2 = 'test_2.jpg'; my $cmd = "convert $thumbNail1 \( +clone -threshold -1 -virtual-pixel +black -spread 10 -blur 0x3 -threshold 50% -spread 1 -blur 0x.7 \) +ma +tte -compose Copy_Opacity -composite $thumbNail2"; system($cmd) == 0 or die "Couldn't launch [$cmd]: $!/$?";

I don't have convert ready to try this, but I think you should print out $cmd to see that it is what you expect, and you should also make sure that you properly convert the shell quoting - parentheses are special for the shell and hence need to be quoted, while they are not necessary for Perl and maybe don't need to be quoted, depending on whether Perl decides to involve a shell in your system call or not (I presume it decides against it). In any case, you could try the list form of system, to make sure there is no shell involved that might mess with your command line:

my @cmd = ( 'convert, $thumbNail1 qw[( +clone -threshold -1 -virtual-pixel black -spread 10 -blur 0x3 -threshold 50% -spread 1 -blur 0x.7 ) +matte -compose Copy_Opacity -composite ], $thumbNail2 ); system(@cmd) == 0 or die "Couldn't launch [@cmd]: $!/$?";

Replies are listed 'Best First'.
Re^2: system call to ImageMagick with many parameters fails
by august (Initiate) on Sep 23, 2009 at 21:17 UTC
    Jep, I simplified the script and added your list so it looks like:

    #!/usr/bin/perl -w use Image::Magick; my $file="1251748705.jpg"; my $rfile="thumbnail.gif"; my $rrfile="thumbnail2.png"; my @cmd = ( "convert, $rfile qw[( +clone -threshold -1 -virtual-pixel black -spread 10 -blur 0x3 -threshold 50% -spread 1 -blur 0x.7 ) +matte -compose Copy_Opacity -composite ], $rrfile" ); system("convert -size 500x180 $file -auto-orient -thumbnail 250x90 +-unsharp 0x.5 $rfile"); system(@cmd) == 0 or die "Couldn't launch [@cmd]: $!/$?";

    The script tells me

    convert,: not found thumbnail.gif: not found Syntax error: word unexpected (expecting ")") Couldn't launch [convert, thumbnail.gif qw[( +clone -threshold -1 -virtual-pixel black -spread 10 -blur 0x3 -threshold 50% -spread 1 -blur 0x.7 ) +matte -compose Copy_Opacity -composite ], thumbnail2.png]: No such file or directory/512 at ./IMT +est33.pl line 26.

    What did I miss??? Thanks

      You didn't miss much, but I missed a single quote at the start of my list.

      Change

      my @cmd = ( "convert, ... ], $rrfile" );

      to

      my @cmd = ( "convert", ... ], $rrfile );

      What you should put into @cmd is the list of arguments, and not a string containing that list.

        ... and now it tells me:

        syntax error at ./IMTest33.pl line 22, near "]" (Might be a runaway multi-line [] string starting on line 10) Execution of ./IMTest33.pl aborted due to compilation errors.

        Guess I need some commas somewhere or...?