背景色を指定してサムネイル画像を作りたい

こんなプログラムを作りたい。

<仕様>
所定の枠(120px,100px)の中に、画像を当てはめたい。
画像は縦横比を壊さずに拡大・縮小して張り込む。
縦や横に隙間が出た場合は、指定の色(赤)を流し込んでおく。

ひとまずできた。

1 #!/usr/bin/perl
2
3 use strict;
4 use Image::Magick;
5
6 my $MAX_WIDTH = 120;
7 my $MAX_HEIGHT = 100;
8 my $BACKCOLOR = "#FF0000";
9 my $SRC_IMAGEFILE = "square_src.jpg";
10 my $DST_IMAGEFILE = "photo1.jpg";
11
12 # 所定のサイズで背景を用意
13 my $back=Image::Magick->new;
14 $back->Set(size=>"${MAX_WIDTH}x${MAX_HEIGHT}");
15 $back->Read();
16 $back->Colorize(fill=>$BACKCOLOR);
17
18 # 前景を用意してリサイズしておく
19 my $image=Image::Magick->new;
20 $image->Read($SRC_IMAGEFILE);
21 my($x,$y) = $image->Get('width','height');
22 $image = $image->Transform(geometry=>"${MAX_WIDTH}x${MAX_HEIGHT}");
23
24 # 背景の中央に前景を張り込む
25 $back->Composite(image=>$image,compose=>'over',gravity=>'center');
26 $back->Write($DST_IMAGEFILE);
27
28 undef $back;
29 undef $image;

ハマったところとしては、ImageMagick のリファレンス
http://www.ss.iij4u.or.jp/~somali/web/_perlmagick_ref.html
には無い機能(Transform)があったところ。

Transform は、ここで知った次第。
http://012.bz/perlmagick/

リファレンスについては、翻訳元の
http://www.imagemagick.net/script/perl-magick.php
を見ると、Transform の機能は例として出てますね。ちょっと古いものの翻訳だったのかもしれません。
感謝しつつ気づいた点をメモということで。

ImageMagick については、他にも、Read() のパラメーターとして'xc:white' が渡せるようですが、そういう仕様がドキュメントで見当たらなかったり、ピンときていない部分がたくさんあります。

そんなわけで、上のサンプルも背景と前景に分けてImage::Magick->new してますが、二つに分けないでできる方法もあるかもしれないです。