Image::Magickでgif画像をcropする
Perlの Image::Magick を使ってgif画像をcropしようとして一日ハマったのでメモ。
use Image::Magick; my ($WIDTH, $HEIGHT) = (320, 240); my ($MOVE_X, $MOVE_Y) = (50, 100); my $image = Image::Magick->new; $image->Read('original.gif'); $image->Crop(geometry => sprintf('%dx%d+%d+%d', $WIDTH, $HEIGHT, $MOVE_X, $MOVE_Y)); $image->Set(page => sprintf('%dx%d+0+0', $WIDTH, $HEIGHT); # これが重要! $image->Write('cropped.gif');
こんな感じでcropできます(動かしてないので色々とミスってるかも)。
ここで大事なのが、Cropした後にSetすること。
なにを隠そうこれに気づくまでに一日かかりました(´;ω;`)
他の処理も挟みながら透過gifを出力させようとしていたのですが、、
Setしないと画像の背景部分まで出力されてしまい、意図した結果になりませんでした。
Perl モジュール Image::Magick で画像を切り抜く方法 | ミヤビッチの穴で紹介されていて助かりました。