WordPressで利用される画像エンジン(ImageMagick/GD)について調べてみました

wordpress-logo-notext-rgbいまさらのネタですが、2012年12月11日にリリースのバージョン 3.5から、WebサーバにImageMagickのPHPモデュール「php-pecl-imagick」(以下、imagick)が入っていたら、自動的にそれがリサイズ等の画像加工に使えるならImageMagickで実行してくれる機能が搭載されてました。

ImageMagickなら、Wordpressに画像メディアをアップロード時に綺麗にリサイズして「サムネイル」「中サイズ」「大サイズ」を作ってくれるらしいが、本当かどうかはわかりません。でもやっぱり、少しでも画像が綺麗になってほしいのでトライしてみたいですよね。

Full Supportは下記の通りのようです。

Imagick support requires Imagick 2.2.0+ compiled against  Imagemagick 6.2.9+, for full support. If the required functions aren’t available, WordPress will default back to GD.

「php-pecl-imagick」はCentOSには入っていないのでコンパイルして準備するにしても、「ImageMagick」の方はCentOSの標準パッケージで提供されています。最新版ではありませんが、なるべくならOSの標準パッケージですましたいところです(多機能であるため、脆弱性も多く…)。

CentOS5だと、Imagemagick 6.2.8

CentOS6なら、ImageMagick 6.5.4

これらがどこまで画像編集に対応しているのか調べてみました。imagickは、この記事を書いた時点で最新のSTABLE 3.1.2を使用してみました。

ちなみになんですが、imagickを入れずにImagemagickだけだとWordpressはImagemagickを使ってくれません。ホスティングの都合上や、imagickをコンパイルできない場合は、CLIコマンドを放つようにWordpressのコアハックや、それ系のプラグインをインストするしかありませんが、コマンドインジェクションなどの脅威があるので、あまりおすすめできません(imagickなら安全という訳でもありませんが…)。

  1. 検証環境1 CentOS5:Wordpress 3.8.1, Imagemagick 6.2.8, imagick 3.1.2
  2. 検証環境2 CentOS6:Wordpress 3.8.1, Imagemagick 6.5.4, imagick 3.1.2

※いずれの画像もFireworksで生成した画像を使用しました。

検証環境1
CentOS5
検証環境2
CentOS6
GIF89a GD imagick
JPEG imagick imagick
PNG8 GD imagick
PNG24 GD imagick
PNG32 GD imagick
TIFF32 WP_Error WP_Error
BMP24 WP_Error imagick

検証は、下記のようなテストコードをWordpressテンプレートのPHPファイルに追加して、wp_get_image_editor関数でどのeditorオブジェクトで返してくるかで結果を取得しました。

$filename = get_template_directory() . '/test32.png';
echo $filename ."\n";
$image = wp_get_image_editor( $filename );
var_dump($image);
echo "\n-------------------------------------\n";

当たり前の話ですが結果を見ると、CentOS6の方の対応状況が良いですね。PNGがCentOS5のImageMagickで対応されてないところが痛いです。

imagickを呼び出すプログラムは「wp-includes/class-wp-image-editor-imagick.php」ですが、画像quality の指定らしい箇所は「wp-includes/class-wp-image-editor.php」の「90」なんでしょうか。

とりあえず、Wordpressのリサアイズ等のエンジンにImageMagickを使いたい場合は、WP3.5以降、コアハックやプラグインは不要のようです。ネット上の情報で、コアハックやプラグインが必要と書かれていた古いものが多かったです。本当のところはどんななんだ?というのが調べるキッカケでした。

何かのご参考になりましたら幸いです。

※上記の内容は全て自己責任のもとでご参考ください。