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 されているかチェックしましょう。
- 画像へのパスを利用者に入力させるのであれば、; や & など怪しい文字列が含まれていないかチェックしましょう