http://www.perlmonks.org?node_id=613313

Trizor has asked for the wisdom of the Perl Monks concerning the following question:

Greeings Monks,

I've been working with some images recently using imagemagick. I started by creating the desired image with the command line tools, but the final objective is to avoid forking off processes, so I would like to be able to use Image::Magick to replecate my steps. This is where I run into trouble.

A brief synopsis of the commands I've run (escape for your shell as needed):

convert ( imgbase*.gif -colorspace Gray -colors 2 -negate ) -colorize +$color -negate -transparent white outimg%02d.gif convert -background white outimg01.gif outimg02.gif outimg03.gif $etc +-flatten outcomp.gif

And the code that from what I've gleaned from the documentation should do the same thing.

my $image; print "Creating composite...\n"; my @imgfiles = glob("img*.gif"); my $compos = Image::Magick->new(size=>'3200x1324'); foreach my $img (reverse @imgfiles) { print "\t Compositing image $img... "; $image = Image::Magick->new(); $image->Read($img); $image->Quantize(colors=>2,colorspace=>"Gray"); $image->Negate(); $image->Colorize(fill=>"rgb(".(pop @colors).")"); $image->Negate(); $image->Transparent(color=>"white"); push @$compos,$image; undef $image; print "composed.\n"; } $compos->Flatten(); $compos->Write('outcomp.gif');

The docs seem kindof sparse and obstruse to me, so if there are undocumented caveats or other things I should know please light the darkness monks.

Replies are listed 'Best First'.
Re: ImageMagick command line replication with Image::Magick
by zentara (Archbishop) on May 03, 2007 at 12:00 UTC
    I know what you mean.... the Perl syntax for Image::Magick is often quite different from the commandline version, and the docs are not very clear. All I usually do is look through the demo.pl that comes in /ImageMagick-6.3.3/PerlMagick/demo, and see what it does. It's a fairly complete demo. Then there is the perl-magick-overview , (although I've sometimes found that it dosn't always have the correct syntax either). Finally, google, and groups.google searches, will sometimes yield clues to correct perl syntax for IM operations.

    I'm not really a human, but I play one on earth. Cogito ergo sum a bum
Re: ImageMagick command line replication with Image::Magick
by strredwolf (Chaplain) on May 03, 2007 at 14:47 UTC
    I tried ImageMagick and the Perl Image::Magick for a while. However, PPM's kept being written as 16-bit RAW files, GIF's and PNG's weren't optimized tightly, and as you said, the docs aren't great. So I switched to NetPBM. Granted, I'm still forking off processes but it's a straight-forward set of tools.

    --
    $Stalag99{"URL"}="http://stalag99.net";

Re: ImageMagick command line replication with Image::Magick
by halley (Prior) on May 03, 2007 at 13:33 UTC
    The question is, does your code work or not? You didn't relate what the actual trouble might be.

    --
    [ e d @ h a l l e y . c c ]