手軽なGDとは裏腹に強力な機能がこれでもかと用意されているImageMagick。GDと同じようにPHPから画像処理を行えます。
ちなみにiPhone Screenshot Makerは今のところGDのみで動いていますが、次のバージョンではImageMagickも使います。新機能がGDだけでは厳しくなってきたんですね。
そんなわけで、xampp(Windows)にImageMagick(imagick)をインスコしてPHPから使うに引き続いて、今回はさくらVPSにImageMagickをインストールしたいと思います。
ImageMagickをPHPから使うには
ImageMagickはPHP専用のプログラムではなく、コマンドラインやPerl・Rubyなどからも利用できます。PHPからImageMagickを使うには「Imagick」というモジュールを通して行います。つまり、ImageMagickとimagickの2つをインストールする必要があります。
インストールは侍エンジニア記さんの記事を参考に進めました。
いつものyumでImageMagickをインストールするのですが、その前にPHPの拡張パッケージであるphp-develを入れる必要があります。imagickはPECLというPHPのライブラリで提供されていますが、PECLがphp-devel内のphpizeを必要とするためです。PEARはPHPで記述されてますが、PECLはCなので高速です。
yum -y install php-devel
この-develってのは「development」の略で開発向けという意味。+αな機能を追加するみたいなイメージです。ImageMagickのように色々追加したい人は-develでインストールしてPHPをフルパッケージにしておく必要があります。
ちなみに私はさくらVPSでスタートダッシュ決めた後はこーすりゃいいの?で、phpと一緒にphp-develも入れてました。
php-develの次は、ImageMagickを-develでインストール。
yum -y install ImageMagick-devel
最後にPECLのimagickをインストールします。pearのように、通常はpeclコマンドを利用するべきですが、メモリエラーが発生する可能性があるようなので、peardevを使ってインストール。
peardev install pecl/imagick
インストールが終わると、php.iniにextension=imagick.soを追加してよっと次の一手をサジェストしてくれます。
install ok: channel://pecl.php.net/imagick-3.0.1
configuration option "php_ini" is not set to php.ini location
You should add "extension=imagick.so" to php.ini
ここまででインストールは完了。最後に設定です。php.iniにimagickを追加します。
php.iniもといphp.dに設定ファイルを追加
あとはphp.iniに、extension=imagick.soを追加するだけなんですが、最近はextensionを/etc/php.d/内にiniファイルを追加することでphp.iniに反映させるようです。iniファイルの中身はimagickに関する記述をするわけですが、今回はとりあえず追加のみなので、
extension=imagick.so
の1行だけです。ファイル作成にはechoコマンドを使います。
echo extension=imagick.so > /etc/php.d/imagick.ini
以上で設定は完了。apacheを再起動して反映。
service httpd restart
成功したか見てみます。phpinfo()などでブラウザから確認しても良いのですが、VPSらしくコマンドラインでチェック。
php -i | grep imagick
php -iの出力をパイプでgrepに渡すことで、imagick文字列が存在する行だけ抜き出されます。
/etc/php.d/imagick.ini,
imagick
imagick module => enabled
imagick module version => 3.0.1
imagick classes => Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator
imagick.locale_fix => 0 => 0
imagick.progress_monitor => 0 => 0