だるろぐ

だるいぶろぐです

Image::Magickで画像を重ね合わせる

何に使うのやら。
giflib-devel とかのライブラリを入れておくのも忘れずに。

#各インスタンス生成
my ($img_down, $img_up_jpg, $img_up_gif) = (Image::Magick->new, Image::Magick->new, Image::Magick->new);
$img_down->Read("path/to/down_image");
$img_up_jpg->Read("path/to/up_image_jpg");
$img_up_gif->Read("path/to/up_image_gif");

#リサイズしたければすればいい
$img_down->Resize(width => $resize_width, height => $resize_height);

#サイズでも計ろうか
my ($w1, $h1) = Image::Size::imgsize("path/to/down_image");
#背景に枠を付けたければ付ければいい
$img_down->Border(
    color  => "#123",
    width  => $border_size,
    height => $border_size,
);

if ($cond) {
    #何となくgifの気分の場合
    $img_down->Composite(image => $img_up_gif, compose => 'Multiply', x => 0, y => 0);
}
else {
    #何となくjpgの気分の場合
    $img_down->Composite(image => $img_up_jpg, compose => 'Dissolve', x => 0, y => 0);
}

#出力して終わり
$img_down->Write("/tmp/result.$ext");

Image::Magickはやれる事が多いのはいいのだけど如何せん疲れる。
例えば Composite の引数に (gravity => "Center") とか追加すると中央に重ねられる、とか。
頑張って読む or 適当に試して天に祈る、お好きな方でどうぞ → http://www.imagemagick.org/script/perl-magick.php