PHPプロ!TIPS+

ImageMagickで簡単に画像処理

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などは当然として、多くの形式に対応しています。すべての形式を見るには、ImageMagickFormatsを参考にしてください。特徴的なところでは、アニメーション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のマニュアルを参考にしていただくと良いでしょう。

バックナンバーについて

TIPS-MLは、毎週金曜日に更新され、新しい記事が掲載されます。

Tipsꗗy[W 

Pick Up Q&A

Q
ログファイルの中の空のデータ行を削除したい
 このエントリーをはてなブックマークに追加 
A
ログのデータ個数(列数)が固定で、空のログが"<><><>"だと既知であれば if ($line === "<><><>") { continue; } で読み飛ばしてもいいのでは? ...

>>続きを読む

まずは配列や文字列の扱いから、じっくり勉強して行きましょう。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)