RSS2.0

ImageMagick6 を Fedora 26 にインストールする

諸事情により Fedora 26 で ImageMagick を使える環境を用意することになりました。
普通だったら yum install して終わりなのですが、リポジトリに上がっているのはインストールしたい ImageMagick6 ではなく、ImageMagick7 のようでした。
なのでソースからビルドしてみたいと思います。

jpg, png モジュールをインストールする

ImageMagick6 本体をビルドしただけでは、取り扱う画像フォーマットが限定されています。jpg や png を扱えない…というより、ほとんどの画像フォーマットが使えないようです。画像フォーマットのデコーダー等は ImageMagick 本体には含まれておらず、自分で用意してくれということなのだと思います。画像フォーマットのライセンスやらもいろいろ事情がありそうです。

そこで、ImageMagick6 をビルドする際に必要な画像フォーマットのパッケージをインストールしておきます。
以下は jpg, png に関するパッケージです。devel パッケージもインストールしておくことに注意してください。
# yum install libjpeg libjpeg-devel
# yum install libpng libpng-devel

Wand の画像フォーマットエラー

jpg, png に関するパッケージをインストールしておかないと、いざ ImageMagick6 を使おうとした時にエラーになります。
python から ImageMagick6 を使える Wand では、以下のようなエラーが発生します。
Traceback (most recent call last):
  File "wandtest.py", line 4, in <module>
    with Image(filename='sample.jpg', format='JPEG') as img:
  File "/home/momokan/python/wand/wand/image.py", line 2744, in __init__
    self.read(filename=filename, resolution=resolution)
  File "/home/momokan/python/wand/wand/image.py", line 2822, in read
    self.raise_exception()
  File "/home/momokan/python/wand/wand/resource.py", line 222, in raise_exception
    raise e
wand.exceptions.MissingDelegateError: no decode delegate for this image format `JPEG' @ error/constitute.c/ReadImage/504
Exception TypeError: TypeError("object of type 'NoneType' has no len()",) in <bound method Image.__del__ of <wand.image.Image: (empty)>> ignored

ImageMagick6 をインストールする

ソースコードは github に上がっています。なのでこれを持ってきましょう。
$ git clone https://github.com/ImageMagick/ImageMagick6
そうしたら clone した ImageMagick6 ディレクトリに移動し、configure, make, make install します。
この辺りのビルドの仕方は伝統的な C プログラムですね。
$ cd ImageMagick6
$ ./configure
$ make
# make install
configure のオプションにインストールディレクトリなんかもあるはずなのですが、面倒なので特に指定していません。指定しない場合には /usr/local/lib に共有ライブラリ(.so ファイル)がインストールされます。

Wand から ImageMagick6 を使う

python から Wand で ImageMagick6 を使う場合には、環境変数 MAGICK_HOME を設定しておく必要があります。
.bash_profile に以下のように設定しておきましょう。
MAGICK_HOME=/usr/local

export MAGICK_HOME
Wand は $MAGICK_HOME 下の lib 配下から共有ライブラリを検索するので、/usr/local/lib/libMagickCore-6.Q16.so といったパスで ImageMagick6 がインストールされている場合、$MAGICK_HOME 値は /usr/local になります。

また、apache から python を動かして Wand を使う場合には、apache にも環境変数 MAGICK_HOME を設定しておかなければなりません。Apache の実行ユーザーの環境変数として設定してもいいですが、Apache の設定ファイルで SetEnv ディレクティブを使ったほうが健全な気がします。
httpd.conf の Directory ディレクティブ内で、MAGICK_HOME を渡しておきます。
<Directory "/var/www/html">
  SetEnv MAGICK_HOME /usr/local
<Directory>
Apache の設定ファイルを変更したら、Apache の再起動もしておきましょう。


  WEB 技術python  コメント (0)  2018/05/07 16:41:26


公開範囲:
プロフィール HN: ももかん
ゲーム作ったり雑談書いたり・・・していた時期が私にもありました。
カレンダー
<<2018, 7>>
1234567
891011121314
15161718192021
22232425262728
2930311234