画像を色反転するだけのperlスクリプト

ImageMagick(perlMagick)を使って、引数に指定されたファイルを色反転するだけのスクリプト*1たくさんの画像を色反転するのに便利。

#!/usr/bin/perl
# 引数で受け取った名前の画像ファイルを色反転する。
use strict;
use warnings;
use Image::Magick;
my ($image, $x);
$image = Image::Magick->new ;
$#ARGV == -1 and die print "画像ファイル名を指定してください。" ;

while ($#ARGV+1) {
  $x = $image->Read("$ARGV[0]");
  warn "$x" if "$x";
  $x = $image->Negate();
  warn "$x" if "$x";
  $x = $image->Write("$ARGV[0]");
  warn "$x" if "$x";
  @$image = ();
  shift;
}
undef $image;

最後の"@$image = ();"を書かないと複数の画像を溜め込んで、出力するときにアニメーションgifにしたり、hoge-1.pnghoge-2.png、...、と複数のpngを一気に吐き出したりカオスな事になる。(←はまった)

*1:後で「mogrify -negate」で良かったことに気づいたorz