2013年11月19日火曜日

CentOS 5.x ImageMagickのインストール

ImageMagickをインストールする。

yumからのインストールでは取得可能なバージョンが古い為、rpmパッケージからインストールを試ます。

[root@centos5 ~]# wget http://www.imagemagick.org/download/linux/CentOS/x86_64/ImageMagick-6.8.7-7.x86_64.rpm
[root@centos5 ~]# mv ./ImageMagick-6.8.7-7.x86_64.rpm /usr/local/src/ImageMagick-6.8.7-7.x86_64.rpm
[root@centos5 ~]# rpm --install --test /usr/local/src/ImageMagick-6.8.7-7.x86_64.rpm
エラー: 依存性の欠如:
        libHalf.so.4()(64bit) は ImageMagick-6.8.7-7.x86_64 に必要とされています
        libIex.so.4()(64bit) は ImageMagick-6.8.7-7.x86_64 に必要とされています
        libIlmImf.so.4()(64bit) は ImageMagick-6.8.7-7.x86_64 に必要とされています
        libImath.so.4()(64bit) は ImageMagick-6.8.7-7.x86_64 に必要とされています
        libjasper.so.1()(64bit) は ImageMagick-6.8.7-7.x86_64 に必要とされています
        liblqr-1.so.0()(64bit) は ImageMagick-6.8.7-7.x86_64 に必要とされています
        liblzma.so.0()(64bit) は ImageMagick-6.8.7-7.x86_64 に必要とされています
        libwebp.so.4()(64bit) は ImageMagick-6.8.7-7.x86_64 に必要とされています

多数の依存性エラーが吐かれた事によって心折れましたので、ソースからインストールをさせて頂きます。c(・ω・`c⌒っ

[root@centos5 ~]# wget http://www.imagemagick.org/download/ImageMagick.tar.gz
[root@centos5 ~]# mv ./ImageMagick.tar.gz /usr/local/src/
[root@centos5 ~]# cd /usr/local/src/
[root@centos5 src]# tar xfz ./ImageMagick.tar.gz
[root@centos5 src]# cd ImageMagick-6.8.7-7
[root@centos5 ImageMagick-6.8.7-7]# ./configure
[root@centos5 ImageMagick-6.8.7-7]# make
[root@centos5 ImageMagick-6.8.7-7]# make install
[root@centos5 ImageMagick-6.8.7-7]# convert -list format | egrep "GIF|JPEG|PNG"
           see part 5 which describes the image encoding (RLE, JPEG, JPEG-LS),
           and supplement 61 which adds JPEG-2000 encoding.
      GIF* rw+   CompuServe graphics interchange format
    GIF87* rw-   CompuServe graphics interchange format (version 87a)
      JNG* rw-   JPEG Network Graphics
     JPEG* rw-   Joint Photographic Experts Group JFIF format (62)
    PJPEG* rw-   Joint Photographic Experts Group JFIF format (62)
      PNG* rw-   Portable Network Graphics (libpng 1.2.10)
           See http://www.libpng.org/ for details about the PNG format.
    PNG00* rw-   PNG inheriting bit-depth and color-type from original
    PNG24* rw-   opaque or binary transparent 24-bit RGB (zlib 1.2.3)
    PNG32* rw-   opaque or transparent 32-bit RGBA
    PNG48* rw-   opaque or binary transparent 48-bit RGB
    PNG64* rw-   opaque or transparent 64-bit RGBA
     PNG8* rw-   8-bit indexed with optional binary transparency
[root@centos5 ImageMagick-6.8.7-7]# convert -resize x100 -quality 80 /var/www/html/test.jpg /var/www/html/test.png

wgetコマンドを使用し、imagemagickの公式サイトから最新版のソースコード配布パッケージを取得します。
makeファイルを作成し、インストールを実行。

インストール後にconvertコマンドを実行し、対応フォーマットの確認を行っています。
最後の行では実際にconvertコマンドを実行し、画像のリサイズ試験を行っています。

-resize
(画像サイズ変更オプション)
x100
(横幅100px指定。この場合、縦幅は自動調整。 縦幅指定の場合は 100x などと指定可能)
-quality
(画像変換のクオリティ値。1-100を指定可能)
80
(指定された変換クオリティ値)


phpのimagickをインストールする。

[root@centos5 ~]# /usr/bin/php -i | grep 'imagick'
[root@centos5 ~]# pecl install 'imagick'
downloading imagick-3.1.2.tgz ...
Starting to download imagick-3.1.2.tgz (94,657 bytes)
.....................done: 94,657 bytes
~中略~
/php/extensions/no-debug-non-zts-20090626/imagick.so

Build process completed successfully
Installing '/usr/local/include/php/ext/imagick/php_imagick.h'
Installing '/usr/local/include/php/ext/imagick/php_imagick_shared.h'
Installing '/usr/local/include/php/ext/imagick/php_imagick_defs.h'
Installing '/usr/local/lib/php/extensions/no-debug-non-zts-20090626/imagick.so'
install ok: channel://pecl.php.net/imagick-3.1.2
configuration option "php_ini" is not set to php.ini location
You should add "extension=imagick.so" to php.ini

[root@centos5 ~]# vi /etc/php.d/imagick.ini      ← 作成
; Enable imagick extension module
extension=imagick.so

[root@centos5 ~]# ln -s /usr/local/lib/php/extensions/no-debug-non-zts-20090626/imagick.so /usr/lib64/php/modules/imagick.so
[root@centos5 ~]# /etc/init.d/httpd configtest
Syntax OK
[root@centos5 ~]# /etc/init.d/httpd reload
httpd を再読み込み中:                                      [  OK  ]
[root@centos5 ~]# /usr/bin/php -i | grep 'imagick'
/etc/php.d/imagick.ini,
imagick
imagick module => enabled
imagick module version => 3.1.2
imagick classes => Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator
imagick.locale_fix => 0 => 0
imagick.progress_monitor => 0 => 0

imagickが未インストールであることを確認したら、peclコマンドにてimagickのインストールを実行します。
インストール完了のメッセージにて「You should add "extension=imagick.so" to php.ini」と表示されているので、それに従います。
この場合は、拡張の設定ディレクトリ/etc/php.d/内にファイル(imagick.ini)を作成し、そこに拡張モジュール読み込み記述を追記しました。
imagick.soへの参照パスが通っていない場合は必要に応じてリンクを張って下さい。
上記の例では ln -s /usr/local/lib/php/extensions/no-debug-non-zts-20090626/imagick.so /usr/lib64/php/modules/imagick.so

設定に問題が無いか確認し、apacheを再読み込みさせます。
最後に、phpにてimagickが有効になったかを確認して終了します。