やかんブログ

PHPのImageMagickラッパライブラリImagickの紹介

2009年06月01日(月)10:03|那須

那須です。

PHPには、ImagickというImageMagickを扱うためのPECL拡張モジュールがあります。

このImagickは、0.x系と2.x系の2種類があるのですが、互換性がなく、使い方が全く異なります。2.x系は、ライブラリがクラス化しており、リソースの管理などが行いやすくなっています。そのため、これからImagickを使う方は、2.x系を使うべきです。

ある画像を100×100のサイズにリサイズする場合のそれぞれの例を下記に示します。

ImageMagickのコマンドを使う場合


> convert -resize 100x100 [original_filename] [thumbnail_filename]

Imagick2.x系を使う場合


$image = new Imagick();
$image->readImage($original_filename);
$image->thumbnailImage(100, 100);
$image->writeImage($thumbnail_filename);
$image->destroy();

Imagick0.x系を使う場合


$handle = imagick_create();
imagick_read($handle, $original_filename);
imagick_copy_resize($handle, 100, 100, null, 0);
imagick_write($handle, $thumbnail_filename);
imagick_free($handle);

※0.x系は、実際の動作確認を行っていません。このような書き方になるであろうという程度のものとお考えください。

いかがでしょうか?2.x系では、リソース管理をクラスで行っているのがわかるかと思います。

ただ、2.x系にはPHPとImageMgickのバージョンに要件があります。

Imagick2.xを使うための要件: - PHP >= 5.1.3 - ImageMagick >= 6.2.4

このため、PHP4系を使わざるを得ない方やImageMagickのバージョンが低いサーバで、自分で勝手に上げることができない方は、0.x系を使う必要があります。

Imagick2.x系のマニュアル Imagick0.x系のマニュアル

PHPマニュアルには、既に0.x系のマニュアルはなく、0.x系のマニュアルは公式なものはありません。0.x系は使うな、ということなのでしょう。今時、PHP4系を使うというのもナンセンスですが、どうしても必要なときのために記載しておきます。

Imagick2.x系はかなり強力にImageMagickをラップしてくれるのですが、公式のマニュアルは、未整備の状況です。現在、Imagick2.x系を色々と実験しているところですので、今後ここで紹介できればと思います。

この記事に関するお問い合わせはこちら

ページの先頭へ