同じ画像を使い回したい時、コピーする方法がわからなくて別のオブジェクトを生成して同じ画像を読み込むというバカなことをやってたんですが、あんまりと言えばあんまりだし、時間もかかるしということで、ちゃんと探したらありました。
下記のコードで、minify.jpg、magnify.jpgがそれぞれちゃんと縮小、拡大されていて、$imageにも影響がないことがわかります。
#!/usr/bin/perl use strict; use warnings; use Image::Magick; # 画像を読み込む my $image = Image::Magick->new; $image->Read('source.jpg'); # オブジェクトを複製 my $imageA = $image->Clone(); my $imageB = $image->Clone(); # それぞれ縮小、拡大 $imageA->Minify(); $imageB->Magnify(); # ファイルに書き出す $imageA->Write('jpg:minify.jpg'); $imageB->Write('jpg:magnify.jpg'); $image->Write('jpg:original.jpg'); print "content-type:text/plain\n\n"; print 'ok'; exit;