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開発者をサポートする情報を掲載しています。