エコモットアドベントカレンダー8日目のエントリーです。
しばらくの間北海道を離れ東京に移り住んでいるのですが、雪がまったくと言っていいほどに降らない為、体内季節感にズレが生じている開発部 金子です。
生まれも育ちも北海道札幌なので「降雪」=「冬の始まり」という季節感が染みついているので雪が降らない冬ってなにかこう、違和感を感じてしまっています。
さて、雑談はさておき。
サーバーサイドで画像処理を行い、その処理結果を使ってホニャホニャみたいな事がしたい!
と思って当初PHP+GDで挑戦していたのですが、一連の画像処理の中で2階調化がどうにもうまくできず「どうしたもんかなー」と途方に暮れていたところ、ImageMagickだったらできるかも?!と思い、まずは環境構築を行いました。
ImageMagickは十年ぐらい前にちょーっとだけ齧ったことがあったので、昔を懐かしみつつ軽い気持ちでXAMPPで構築したローカル環境にImageMagickをインストールしてたんですが、思いの外つまづく部分も多かったので、手順を改めてまとめてみました。
1.phpinfo()でバージョンチェック
ImageMagickは複数のバージョンが存在しており、インストールする環境にあわせてチョイスしないと、
- phpinfo()にそもそも出てこない
- 出てきていてもImageMagick number of supported formatsが0で、ImageMagick supported formatsがno value
という悲しい状態に…。
なのでまずはphpinfo()でインストールされているPHPのバージョンなどをチェックしましょう。
確認すべき重要な点は以下の4点。
- PHP Version
- Compiler
- Architecture
- Thread Safety
これらの組み合わせでダウンロードするファイルが変わってきますのでチェックしておいてください。
自分の環境だと
- PHP Version → 7.1.11
- Compiler → MSVC14
- Architecture → x86
- Thread Safety → enabled
でした。後述はこの環境に合わせて記載しますので適宜読み替えていってください。
2.各種ファイルのダウンロードと配置
- http://windows.php.net/downloads/pecl/deps/
- http://windows.php.net/downloads/pecl/releases/imagick/
上記2サイトから必要なファイルをダウンロードします。
- はImageMagickの本体でb.はPHPに読み込ませるdllです。
まずは本体から
- のサイトにアクセスし、CTRL+Fページ内検索を表示し「ImageMagick」と入力します。
そうすると、6ファイルほど見つかるはずなのでこの6ファイルの中から事前に確認した環境に合わせたファイルをダウンロードします。
ファイル名の規則が、
ImageMagick-{ImageMagickのバージョン}-{PHPのバージョン}-{Compiler}-{Architecture}.zip
ですので、今回は、ImageMagick-6.9.3-7-vc14-x86.zipをダウンロードします。
ダウンロードしたらZIPファイルを展開し、生成されたフォルダ(今回はImageMagick-6.9.3-7-vc14-x86)を適当な場所に移動させておきます。
今回はXAMPPで使用するのでわかりやすいようにc:\xampp内に移動させておきました。
c:\xampp
└ImageMagick-6.9.3-7-vc14-x86
次にPHPのライブラリ
- のサイトにアクセスします。ずらずらっとバージョンの羅列が出てきますがここは最新版でOKです。(今回は3.4.3)
そうするとまたまた複数ファイルへのダウンロードリンクが表示されますが、ここは先ほどの本体同様、環境に合わせたファイルをダウンロードします。
php_imagick-{ライブラリのバージョン}-{PHPのバージョン}-{Thread Safety}-{Compiler}-{Architecture}.zip
という規則になってますので、今回は、php_imagick-3.4.3-7.0-ts-vc14-x86.zipをダウンロードしました。
※Tread Safetyについてはenabledなら“ts”、disabledなら“nts”を選んでください。
ダウンロードしたらZIPファイルを展開、生成されたフォルダ内からphp_imagick.dllをPHPのextensionディレクトリに移動させておきます。
extensionディレクトリが不明な場合は、phpinfo()のextension_dirを見ると良いです。
今回は、C:\xampp\php\extに移動させました。
3.環境設定
まずは本体から
先ほどc:\xampp直下に配置したImageMagick-6.9.3-7-vc14-x86へパスを通しておきます。
システム環境変数にMAGICK_HOMEという名前の変数を新たに作り、パスを
C:\xampp\ImageMagick-6.9.3-7-vc14-x86\bin
と設定します。
次に既存のPathにも同様にC:\xampp\ImageMagick-6.9.3-7-vc14-x86\binを追加します。
これで本体の設定は完了です。
システム環境変数画面の表示の仕方がわからない場合は
Windowsキー + Pauseを押して表示された画面の右側の「システム詳細設定」からOKボタンとかの上の「環境変数」か、画面右下のWindowsアイコンの上で右クリック→システム、設定の検索欄に「環境変数」と入れると表示されます。
次にPHPのライブラリ
php.iniに先ほどextentionディレクトリに移動させたdllを読み込ませる記述を追記します。
php.iniの場所が不明な場合は、phpinfo()のLoaded Configuration Fileを参照しましょう。
今回は、C:\xampp\php\php.iniを編集します。
ファイル内を「extension=」とかで検索すると様々なライブラリを読み込ませている個所があるのでそこらへんに
extension=php_imagick.dll
を追記し保存します。
多分場所はどこでもいいはずですが。
4.インストールされているかの確認
xamppを立ち上げApacheを起動します。(またはStop→Start)
phpinfo()を表示し、CTRL+Fでページ内検索欄を表示し「Imagick」と入力します。
それで以下のような表示がされればインストール成功です。
もしImageMagick number of supported formatsが0だったり、ImageMagick supported formatがno valueだった場合は、配置したファイルのバージョン違いか、環境変数の設定が誤っている可能性があります。 再度確認してみてください。
ImageMagickを利用しなければならないというシーンなんか滅多にないと思われるので需要が高いわけでもありませんが、あまり使われてない(?)ライブラリを敢えて使うっていうのも脳みその運動になってよいかもしれません。
ちなみに
ImageMagick(正確にはPHPのImagickクラス)を使って、サーマル画像の熱部分を抽出し白に置き換え、画角に対する白いピクセルの占有率を算出するプログラムを作ってみました。
なかなかImageMagick、面白いです。