2004年03月27日
Perlで画像のサイズを取得する方法
PerlでJPEGやGIF、PNGのサイズを取得する方法で悩む。
GDとGDモジュールを使う方法が一番シンプルだけどGDをインストールしなきゃならない。なかなかめんどくさい。
かといって自作でバイナリを解析するつもりは毛頭ない。
PHPがインストールされていて、外部プロセスを起動する負荷を厭わなければ、PHP のgetimagesize関数を使うのが一番気楽だろう。この関数はGDがなくても動くのがうれしいところ。
で、PHPのスクリプトはこんな感じ。仮に getsize.php という名前で保存するとしよう。
<?
if(is_file($argv[1]))
{
    list($w, $h) = getimagesize($argv[1]);
    print "$w,$h";
}
?>
Perl では、
my ($w, $h) = split(/,/, `php -f getsize.php <画像のパス>`);
とすりゃーよいだけ。
蛇足ながら...
- php や getsize.php はフルパスで書きましょう。
 - $w と $h が defined されているかチェックしましょう。
 - 画像へのパスを利用者に入力させるのであれば、; や & など怪しい文字列が含まれていないかチェックしましょう