ImageMagick は、スタンダードな画像処理ライブラリ&ユーティリティです。Image::Magick というラッパーモジュール (PerlMagick はその別名です) を使って Perl からも画像処理を行うことができます。ここでは、OS X 10.9.4 にセットアップした際の手順をメモします。
##Cactuslab 製インストーラの入手
ImageMagick のインストール方法には直コンパイル、MacPorts や Homebrew などいろいろあります。その中で今回は、Cactuslab というデベロッパー集団の作成してくれたインストーラ(pkg ファイル)を扱います。
pkg を用いる利点を一応述べておくと、
- GUI インストーラによるキーボード打鍵数節約
- バイナリなのでコンパイルの苦労&時間節約
などがあるでしょう。
さて、目的の pkg ファイルは http://cactuslab.com/imagemagick/ からダウンロードできます。3点のパッケージへのリンクが並んでいると思いますが、[Requires XQuartz] のついていないもので大丈夫です。
パスを通す & 動作確認
パッケージよりインストールを行った場合、/opt/X11/bin と /opt/ImageMagick/bin に既にパスが通っているはずです。
$ which convert
として確認してみてください。
動作を確認するために、まず、適当なJPEG画像 hoge.jpg を用意します。hoge.jpg のあるディレクトリにおいて、
$ convert hoge.jpg hoge.png
として、hoge.png が生成されることを確認します。
##PerlMagick のインストール
###CPAN からダウンロード
1. バージョンの適合する tarball を入手
たとえば ImageMagick 本体のバージョンが 6.87 であれば、
$ wget http://search.cpan.org/CPAN/authors/id/J/JC/JCRISTY/PerlMagick-6.87.tar.gz
などとして、 同じバージョン用のモジュールのソースを入手します。
2. ImageMagick 系ライブラリ, libperl の配置の確認
ImageMagick のヘッダのあるインクルードディレクトリとライブラリのディレクトリを後で Makefile.PL 内で設定します。
Cactuslab の pkg の場合、ImageMagick 及びそのライブラリは /opt/ImageMagick 以下にインストールされています。それを確認するために
$ ls /opt/ImageMagick/include/ImageMagick-6
$ ls /opt/ImageMagick/lib
としてみます。ImageMagick のバージョンが6系であれば、上記がそれぞれインクルードパスとライブラリパスになります。
また、libperl も正しく呼び出せなければならないようです(参考:id:rin1024さん)。以下のようにして確認した libperl を含んでいるディレクトリのパスを、後で Makefile.PL を編集してインクルードパスとライブラリパスの両方に追加します。
$ locate libperl
3. インストール先決定 (@INC の確認)
モジュールの外部からのインストール先をユーザディレクトリ以下(例として、~/.local/lib/Perl5/)にしている場合は、~/.bashrc 等に次のように記述しておきます。(シェルが異なる場合は適宜読み替えてください)
export PERL5LIB=/Users/username/.local/lib/
このとき 'Perl5' が INSTALL_BASE 以下、モジュールの入るパスとなり、/Users/username/.local/lib を INSTALL_BASE として指定することとなります。
$ perl -e "print join ',', @INC"
とすると現在の Perl のモジュール検索パスを確認できます。
4. Makefile.PL を編集する
$ vim Makefile.PL
165 行目付近、
my $INC_magick = " ... ";
my $LIBS_magick = " ... ";
となっている箇所はそれぞれインクルードパスとライブラリパスを指定する変数です。
インクルードパスは -I/path/to/include/ImageMagick-x
ライブラリパスは -L/path/to/lib
の形で、それぞれの変数の値の文字列の先頭部に、スペースを挟んで追加してください。また、locate libperl で確認したパスを 両方に追加します。
my $INC_magick = "-I/opt/ImageMagick/include/ImageMagick-6/ -I/System/Library/Perl/5.16/darwin-thread-multi-2level/CORE ... ";
my $LIBS_magick = "-L/opt/ImageMagick/lib -L/System/Library/Perl/5.16/darwin-thread-multi-2level/CORE ... ";
5. INSTALL_BASE を指定してビルド
configure-make-make install です。モジュールのインストール先として、通常は PREFIX を指定することになるのですが、私の環境では、
$ perl Makefile.PL PREFIX=/Users/username/.local
Only one of INSTALL_BASE or INSTALL_BASE can be given. Not both.
と怒られてしまいました。PREFIX を INSTALL_BASE に変えて
$ perl Makefile.PL INSTALL_BASE=/Users/username/.local
と指定すると成功します。あとは
$ make && make install
でビルド&インストールが完了します。
動作確認
$ perl -MImage::Magick -e ""
上記のコマンドが通ればモジュールファイルそのものは組み込めています。くろひつじさんのメモ帳などのコードを参考にして動作確認してみましょう。
##参考