この記事は最後に更新してから1年以上経過しています。
説明
WordPress 3.5のイメージエディタ(WP_Image_Editor)は、GDだけでなく、imagick(ImageMagick)にも対応している。そんなわけでWindows 8の開発環境にimagickをインストールしてみた。imagickをダウンロード
Windowsの開発環境の整備で困るのは、ソースコードからのビルド。Linux環境のように標準でビルドすることができないことだろう。そんなわけで、今回はWindows向けのバイナリを探すところから始めた。
検索して見つかったのが「MIKKO'S BLOG」(このサイト、WordPressで構築されていますね)。ここの「New builds for PHP 5.4 and PHP 5.3」にアクセスして、「imagick-php54-php53.tgz」をダウンロードした。
ダウンロードしたアーカイブを解凍してインストール
「imagick-php54-php53.tgz」を対応したツールで解凍すると「imagick-php54-php53.tar」になり、さらに解凍するとimagkckディレクトリの中にImageMagick-6.8.0-vc9、php53、php54ディレクトリが展開される。imagick
├─ImageMagick-6.8.0-vc9 Windows向けランタイムファイル(DLL)
├─php53 PHP 5.3向け
└─php54 PHP 5.4向け
現在開発環境で使っているPHPは5.3.16 TS(thread-safe)版で、C:\Program Files (x86)\PHPディレクトリにインストールしている。php53ディレクトリにあるphp_imagick_ts.dllファイルと、ImageMagick-6.8.0-vc9ディレクトリを丸ごとC:\Program Files (x86)\PHP\extディレクトリにコピーする。
続いてphp.iniの編集。追加する内容は次の通りで、そのほかのエクステンションを記述している末尾に追加する。
[PHP_IMAGICK]
extension=php_imagick_ts.dll
なお青字の部分は、他のエクステンションの記述例に倣っただけなので、実際のところは不要である。
次に環境変数PATHに、imagickのWindows向けランタイムファイルのディレクトリ(ここではC:\Program Files (x86)\PHP\ext\ImageMagick-6.8.0-vc9)を追加する。環境変数の設定は、デスクトップの「コンピューター」を右クリックしてプロパティを選択。左上側の「システムの詳細設定」をクリックし、「環境変数(N)...」をクリックすればいい。
なお私のPCでは、VC9(Visual Studio 2008)のランタイムファイルがインストール済みだったため、説明を省いている。PCによってはこちらのインストールが必要になる。
imagickを確認
コマンドラインでPHPが動作できるようになっているなら、「コマンドプロンプト」を開き、次のコマンドを実行する。
C:\Users>php -i | find "imagick"
imagick
imagick module => enabled
imagick module version => @PACKAGE_VERSION@
imagick classes => Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator
imagick.locale_fix => 0 => 0
imagick.progress_monitor => 0 => 0
これまでの手順を正しく行って入れれば、このような表示になる。もしエラーになる場合は、PHPのバージョン、コピーしたパスの確認してほしい。
ApacheでPHPの設定変更を有効にするため、Apacheをリスタート。phpinfo関数を呼び出して、imagickが有効になっていることを確認する。
imagick
imagick module | enabled |
---|---|
imagick module version | @PACKAGE_VERSION@ |
imagick classes | Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator |
ImageMagick version | ImageMagick 6.8.0-7 2012-11-23 Q16 http://www.imagemagick.org |
ImageMagick copyright | Copyright (C) 1999-2012 ImageMagick Studio LLC |
ImageMagick release date | 2012-11-23 |
イメージエディタでimagickが使えるか確認
PHPでimagickが動作していることが確認できたので、WordPressのイメージエディタでimagickが使えるか確かめてみる。確認方法としては、現在のテーマのfunctions.phpに次の内容を追記する。
$ie = wp_get_image_editor( 'C:\test.png' );
var_dump( get_class( $ie ) );
wp_get_image_editor関数のパラメータは、ここでは'C:\test.png'となっているが、この画像ファイルは実際に読み込みが行われるので、必ず実在する画像ファイルのパス名を指定すること。
実際にWebページにアクセスして、その結果を確認する。
string(18) "WP_Image_Editor_GD"
どうやらimagickは正しく認識されていない。理由を確認するため、トレースしてみると、/wp-includes/class-wp-image-editor-imagick.phpのtestメソッドにて、バージョンチェックしている部分で引っかかっていた。
if ( version_compare( phpversion( 'imagick' ), '2.2.0', '<' ) )
return false;
phpinfoの結果でも確認できるように、phpversion関数で取得できる内容が'@PACKAGE_VERSION@'なっており、それがバージョンチェックで、2.2.0未満と判定されているようだ。
回避方法
とりあえずの回避方法は、2つある。1つは、先ほどのif文の2行をコメントアウトする方法。とても簡単な方法だが、システムのソースコードを修正してしまうので、WordPressのバージョンアップ時に注意が必要となる。
もう1つは、php_imagick_ts.dllのバージョン情報部分をバイナリエディタ等を使って書き換えてしまう方法である。実際に試したのは、
'@PACKAGE_VERSION@'
'3.1.0RCx '
このどちらの方法であっても、イメージエディタでimagickが有効になる。回避方法を対応して、Webページにアクセスした結果が次の内容である。
string(23) "WP_Image_Editor_Imagick"
GDよりもimagickが優先される
こんな感じでWindows環境でもイメージエディタでimagickが利用できるようになった。imagickとGDの両方がインストールされたPHP環境では、imagickが優先されるので、その点も覚えておきたいところである。
例によって、回避方法については自己責任で。
最終更新 : 2012年12月23日 10:40
関連
お勧め
parse_blocks(2024年7月24日 更新)
single_post_title(2012年9月6日 更新)
timer_stop(2021年7月23日 更新)
is_ssl(2022年7月2日 更新)
wp_title_rss(2014年4月10日 更新)