ImageMagickというライブラリをご存知でしょうか?GDの機能強化版と言えば、理 解が早いかもしれません。

ImageMagickはhttp://www.imagemagick.org/にて配布されている、画像を編集す るためのツールソフトウェアです。GPL互換性のあるライセンスで提供されてお り、LinuxやWindowsなどの多くのプラットフォームで利用することができます。

さて、ImageMagickを使うには、2通りの方法があります。1つはコマンドライン ツールを用いる方法と、もう1つはPECLで提供されている、PHPのPECL:imagickエクステン ションを利用する方法です。コマンドラインツールの汎用性を考慮して、今 回はコマンドラインツールでの使い方を紹介します。

コマンドラインツールは、公式サイト にてWindows バイナリLinux バイナリが配布されているほか、Linuxであれば多くのディストリビュー ションでパッケージとして用意されています。

ImageMagickは強力な画像変換ツール群が提供されます。その中の1つがconvert です。これは、画像フォーマットや拡大・縮小をサポートするだけでなく、画像 上への描画、各種の画像エフェクトなど、多くの機能が装備されています。 convertプログラムだけでも十分に使えるほどの機能を持っていることと、あま りにも同コマンドのオプションが多いので、今回はその中でもよく使われる画像 変換のオプションを紹介します。

○ 画像を拡大・縮小する

a.gifのサイズを100x100に収まるように拡大・縮小し、b.gifとして出力します。

convert a.gif -resize 100x100 b.gif

この場合、縦横比は一定になるように拡大・縮小されます。次に、縮小はしたい が、拡大はしたくない場合の例です。

convert a.gif -resize 100x100\> b.gif

最後に、縦横比を保持せずにちょうど100x100にする場合の例です。

convert a.gif -resize 100x100\! b.gif

○ 画像のフォーマットを変換する

GIF、PNG、JPEGなどは当然として、多くの形式に対応しています。すべての形式 を見るには、ImageMagick Formatsを参考にしてください。特徴的なところでは、アニメーションGIFや TIFFなど、複数の画像を格納するフォーマットにも対応していることです。

通常は拡張子から自動的に判別されます。

convert a.gif a.png

また、標準入力から標準出力に渡すこともできます。

convert gif:- png:-

前のマイナスが標準入力、後ろ側が標準出力です。exec関数などと組み合わせる と、一時ファイルを作らず、オンザフライで処理できます。

○ 2つの画像の合成を行う

compositeという専用プログラムも用意されていますが、convertプログラムの- composeオプションを使っても同様の処理が可能です。 下のコマンドは、b.gifをa.gifの上に表示し、a.pngとして保存する例です。

convert -compose over b.gif a.gif  a.png

もちろん、多くの画像の合成を続けて行うこともできます。

以上、convertプログラムの説明を簡単に行ってきました。convertプログラムの 残りのオプションについては、convertのマニュアル を参考にしていただくと良いでしょう。


(アシアル 田中正裕)

この記事は、アシアルが運営するPHP開発者のためのポータル&コミュニティサイト「PHPプロ!」で毎週配信しているPHP・TIPSメーリングリストを再録したものです。
同サイトでは、他にもPHP最新ニュースや、困ったときのQ&A掲示板、初心者向けのPHP講座など、PHP開発者をサポートする情報を掲載しています。