convertコマンド

ImageMagickのconvertコマンドをsystem関数でたたいてた古いプログラムを動かす必要があったのだが、そのためだけにImageMagickインストールするとか面倒すぎたので、perlでconvertコマンド的なものを書いてお茶を濁した。

ファイル形式の変換とリサイズしかできない。

#!/usr/bin/env perl

use strict;
use warnings;

use Getopt::Long;

use Imager;
use Path::Class qw/file/;

GetOptions(
    \my %options,
    qw/geometry=s/,
);

my $in  = file($ARGV[0]);
my $out = file($ARGV[1]);

my ($width, $height) = ($options{geometry} || '') =~ /(\d+)x(\d+)/;

# read
my $img = Imager->new;
$img->read( file => "$in" ) or die 'Cannot read: ', $img->errstr;

# scale if exists geometry option
if ($width and $height) {
    $img = $img->scale( xpixels => $width, ypixels => $height, type => 'nonprop' );
}

# write
$img->write( file => $out ) or die 'Cannot write: ', $img->errstr;
by typester / at 2008-03-12T12:24:00 / perl / Comments(0)