【コラム】

OS X ハッキング!

93 ImageMagickで画像ファイルを一括変換

    海上忍  [2004/05/31]

    梅雨がやってくる。気密性の高いマンションに暮らす筆者にとっては、折りにつけ窓を開けるなど風通しに配慮しなければならない面倒な季節だ。気温も上がってきたことだし、そろそろ愛機G4 Cubeの排熱対策に本腰を入れねば。

    さて、今回は趣向を変えて「ImageMagick」について。コマンドで操作するという独特のインタフェースを持つグラフィックソフトだが、それゆえにバッチ処理を得意とするため、デジカメで撮影した大量の写真をWebページ掲載用に加工する、といった用途に最適。オープンソース系ではGIMPばかり注目が集まってしまい目立たないが、侮れない機能を持つ実力派なのだ。

    OS XにImageMagickを導入する場合には、ソースコードをコンパイルする方法もあるが、Finkのパッケージを利用したほうがいいだろう。PNGやJPEGなどの画像ライブラリのほか、PostScript/EPSを扱うときにGhostScript(フリーのPostScriptインタープリタ)が必要となるため、ImageMagick本体の前にいくつものパッケージをインストールしておかなければならないからだ。一方のFinkは「fink install imagemagick」と実行するだけでOK。一眠りしている間に全作業が完了していることだろう。

    なお、ImageMagickの最新バージョンはv6.0.1だが、Finkに収録されているバージョンはv5.5.6と少し古い。両者に大きな機能差はないが、最新版でなければ気が済まないというトンガった人はソースからどうぞ。

    基本は「display」

    ImageMagickはPhotoShopやGIMPのような統一されたインタフェースは持たず、機能の異なるコマンド群により構成されている。「display」はそのコマンドの1つで、引数に与えたファイルを画面に表示するビューワとしての機能を持つ。引数を省略した場合には、イメージキャラクタの魔法使いのイラストが表示されるはずだ。

    $ display flowers.jpg &

    表示された画面をクリックすると、[File]や[Edit]などの項目を備えたメニューバーが表示される。画像の回転や切り取り、サイズの拡大/縮小などの基本的な作業のほか、エンボスやブラーなどの特殊効果を加えることもできる。

    なお、「display: Unable to open X server ()」と表示された場合には、X11.appが起動されていることを確認すること。また、X11.appとともに起動されるxtermからではなくTerminal.appから起動する場合には、DISPLAY環境変数が定義されていること(ex. export DISPLAY=localhost:0.0)を確認してみよう。

    「convert」で画像を編集

    ImageMagickの長所は、なんといっても"複数の画像処理を同時に実行できる"ところにある。「convert」はその役割を担う、特に利用価値の高いコマンドだ。膨大な数が用意されたオプションの用法は「man convert」で調べていただくとして、ここでは2つほど実例を紹介してみよう。

    以下に示す例では、画像のリサイズとフォーマット変換を同時に処理している。サイズは「-resize」オプションに続けて縦x横のピクセル数、または「50%」のように比率を示せばいい。フォーマット種は拡張子により自動的に判定されるため、JPEGならば「.jpg」、TIFFならば「.tif」の要領で指定すればOK。

    $ convert -resize 640x480 before.JPG after.png

    convertコマンドを利用すれば、アニメーションGIFも簡単に作成できる。以下の実行例では、連番のGIFファイル(sozai1~10.gif)を素材とし、10ミリ秒間隔で無限に画像を切り替える「anim.gif」を作成している。

    $ convert -loop 0 -delay 10 sozai*.gif animated.gif

    他にもいろいろ

    ImageMagickには他にも便利なコマンドが用意されている。たとえば、カレントディレクトリにあるすべてのJPEGファイルを20%に縮小したうえでPNGに変換するには、以下のとおり「mogrify」コマンドを実行する。使用できるオプションはconvertとほぼ同じだが、複数のファイルを対象にできる点が特徴だ。他にも「montage」などユニークなコマンドが用意されているので、「man ImageMagick」で調べてみよう。

    $ mogrify -resize 20% -format png *.JPG

    新着記事

    特設サイトの情報

      人気記事

      一覧

      イチオシ記事

      新着記事

      特別企画

      マイナビニュースマガジン