http://qs321.pair.com?node_id=53891
Category: Graphics
Author/Contact Info strredwolf
Description: Takes every comic strip in ./InRotation, massage it, and put it into ./done. Uses ImageMagick.
#!/usr/bin/perl

# Take all in InRotation
# Scale them down
# Add the byline on top
# Save them to done

# Anything with a -c.png is a color pic, and should be save as a .jpg,
+ not a
# .gif

$|=1;

use Image::Magick;

$byline=Image::Magick->new;
$byline->Read('StalagComicTitle.gif');

$from="./InRotaton";
$to="./done";

opendir(DIR,$from) || die "Something: $!";
@d = grep {/^\d+/} readdir(DIR);
closedir(DIR);

@d1=sort @d;

# print @d1;
# exit;

while(@d1)
{
    $f=shift @d1;
        print "Working on $f... ";
    $f =~ /^([^.]+)\./;
    $fo=$1; $color=0;
    $color++ if($f =~ /-c\.png$/);
    $fo .= ($color ? ".jpg" : ".gif" );

    $img = Image::Magick->new;
    $img->Set(size=>"720x1024");
    $img->ReadImage("null:white");
    
    
    $src = Image::Magick->new;
    $src->Read("$from/$f");
    $src->Resize(geometry=>"720x720",filter=>"Cubic",blur=>.5);
    ($w,$h)=$src->Get('width','height');
    

    $h+=16;
    $img->Composite(compose=>'Replace',image=>$byline,x=>0,y=>0);
    $img->Composite(compose=>'Replace',image=>$src,x=>0,y=>16);
    $img->Crop(x=>0,y=>0,width=>$w,height=>$h);
    unless($color)
    {
        $img->Quantize(colors=>16);
        $img->Write("$to/temp.pgm");
        system "ppmtogif $to/temp.pgm > $to/$fo";
    } else {
        $img->Write("$to/$fo");
    }
    print "done.\n";
}