Help us understand the problem. What is going on with this article?

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

More than 5 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 ""

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

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした