PerlMagickをインストールした

テストついでに http://0xcc.net/unimag/11/ を参考に
ドロップシャドウの部分を自分用に改造してみた。
$magick はグローバル変数にして画像読み込み時に
$image->Get('magick') で取得するように変更している。

sub draw_blur_shadow {
    my ($image) = @_;
    my ($width, $height) = $image->Get('width', 'height');
    my $width2  = $width + $shadow_width;
    my $height2 = $height + $shadow_width;

    if($magick eq "GIF" || $magick eq "PNG") {
        # 透過色を設定する。
        $image->Set(bordercolor => '#facade');
    } else {
        $image->Set(bordercolor => 'white');
    }

    my $shadow = Image::Magick->new;

    $shadow->Set(size=>"${width2}x${height2}");
    $shadow->ReadImage('xc:white');
    my $x = $width - 15;
    my $y = $height - 15;
    my $width3 = $width + 1;
    my $height3 = $height + 1;
    $shadow->Draw(primitive=>'rectangle', points=>"$x,5 $width3,$height3",
            stroke=>$shadow_color, fill=>$shadow_color);
    $shadow->Draw(primitive=>'rectangle', points=>"5,$y $width3,$height3",
            stroke=>$shadow_color, fill=>$shadow_color);
    $shadow->GaussianBlur(radius=>5, sigma=>3);
    $shadow->Composite(image=>$image, compose=>'Over', x=>0, y=>0);

    @$image = @$shadow;
}

元画像
変換後