end0tknr's kipple - 新web写経開発

http://d.hatena.ne.jp/end0tknr/ から移転しました

ImageMagick (PerlMagick)で色変換(透過付)&サイズ変更&アニメーションgif

ImageMagick (PerlMagick)による色変換(透過付) - end0tknrのkipple - web写経開発
先日のentryに関連して、複数画像からアニメーションgifを生成。

#!/usr/local/bin/perl
use strict;
use File::Basename;
use Image::Magick;
use Data::Dumper;
# refer to http://www.imagemagick.org/script/perl-magick.php

main(@ARGV);

sub main {
    my ( @org_img_files ) = @_;

    my $img_mgk = Image::Magick->new();

    for my $org_img_file ( @org_img_files ){
	print "ORG FILE : $org_img_file\n";

	#http://www.imagemagick.org/script/perl-magick.php には
	#Read() の返り値は、読込だfile数とありますが、実際にはdie するみたい
	$img_mgk->ReadImage($org_img_file);

	#サイズ変更 resize / trim
	#width x height +offset +offset
	$img_mgk->Crop(geometry=>'240x240+80+80');
	#色変換 (fill:塗り潰し色, fuzz:いい感じ具合)
	$img_mgk->Opaque(color=>'#ff0000', fill=>'#ff3300', fuzz=>'15%');
	$img_mgk->Opaque(color=>'#ffffff', fill=>'#cccccc');
	#透過
	$img_mgk->Transparent(color=>'#000000');

	my ($fn, $path, $ext) = fileparse($org_img_file, qw/.bmp .BMP/);
	my $new_img_path = join('',$path,$fn,'.gif');  #透過がある為,gif形式
    }

    $img_mgk->Animate(delay=>20); # 1/100 sec
    $img_mgk->Write('new_anime.gif');
}