Perl
ImageMagick
image

MavericksにImageMagick(Cactuslab製インストーラ) + PerlMagickを入れる

More than 3 years have passed since last update.

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] のついていないもので大丈夫です。

スクリーンショット 2014-07-17 11.06.48 AM.png

パスを通す & 動作確認

パッケージよりインストールを行った場合、/opt/X11/bin と /opt/ImageMagick/bin に既にパスが通っているはずです。

bash
  $ which convert

として確認してみてください。

動作を確認するために、まず、適当なJPEG画像 hoge.jpg を用意します。hoge.jpg のあるディレクトリにおいて、

bash
  $ convert hoge.jpg hoge.png

として、hoge.png が生成されることを確認します。

PerlMagick のインストール

CPAN からダウンロード

1. バージョンの適合する tarball を入手

たとえば ImageMagick 本体のバージョンが 6.87 であれば、

bash
  $ 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 以下にインストールされています。それを確認するために

bash
  $ ls /opt/ImageMagick/include/ImageMagick-6
  $ ls /opt/ImageMagick/lib

としてみます。ImageMagick のバージョンが6系であれば、上記がそれぞれインクルードパスとライブラリパスになります。

また、libperl も正しく呼び出せなければならないようです(参考:id:rin1024さん)。以下のようにして確認した libperl を含んでいるディレクトリのパスを、後で Makefile.PL を編集してインクルードパスとライブラリパスの両方に追加します。

bash
  $ locate libperl

3. インストール先決定 (@INC の確認)

モジュールの外部からのインストール先をユーザディレクトリ以下(例として、~/.local/lib/Perl5/)にしている場合は、~/.bashrc 等に次のように記述しておきます。(シェルが異なる場合は適宜読み替えてください)

.bashrc
  export PERL5LIB=/Users/username/.local/lib/

このとき 'Perl5' が INSTALL_BASE 以下、モジュールの入るパスとなり、/Users/username/.local/lib を INSTALL_BASE として指定することとなります。

bash
$ perl -e "print join ',', @INC"

とすると現在の Perl のモジュール検索パスを確認できます。

4. Makefile.PL を編集する

bash
  $ vim Makefile.PL

165 行目付近、

Makefile.PL(before)
  my $INC_magick = " ... ";
  my $LIBS_magick = " ... "; 

となっている箇所はそれぞれインクルードパスとライブラリパスを指定する変数です。

インクルードパスは -I/path/to/include/ImageMagick-x
ライブラリパスは -L/path/to/lib
の形で、それぞれの変数の値の文字列の先頭部に、スペースを挟んで追加してください。また、locate libperl で確認したパスを 両方に追加します。

Makefile.PL(after)
  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 を指定することになるのですが、私の環境では、

bash
  $ perl Makefile.PL PREFIX=/Users/username/.local
  Only one of INSTALL_BASE or INSTALL_BASE can be given.  Not both.

と怒られてしまいました。PREFIX を INSTALL_BASE に変えて

bash
  $ perl Makefile.PL INSTALL_BASE=/Users/username/.local

と指定すると成功します。あとは

bash
  $ make && make install

でビルド&インストールが完了します。

動作確認

bash
  $ perl -MImage::Magick -e ""

上記のコマンドが通ればモジュールファイルそのものは組み込めています。くろひつじさんのメモ帳などのコードを参考にして動作確認してみましょう。

参考