tweeeetyのぶろぐ的めも

アウトプットが少なかったダメな自分をアウトプット<br>\(^o^)/

【perl】perlbrew環境化にImageMagicをインストールして使ってみる(リサイズしてみる)テスト

はじめに

ImageMagicはすでにインストールしてしまってる(もしくはしてなくてもOK)が
perlbrewな個人環境で使いたいのでrootで入れたImageMagicでは扱えない。
そんな時のメモ。

ってことで、個人環境に ImageMagicとperlMagicを入れます。

ながれ

  1. 個人環境にImageMagicダウンロード
  2. 個人環境にImageMagicインストール
  3. 使ってみる
  4. jpegについて

1. 個人環境にImageMagicダウンロード

環境確認

下記のサイトからあったものを選んでダウンロードします
http://www.imagemagick.org/

今回、環境はこんな感じです。

※ OS確認
# cat /etc/redhat-release
CentOS release 6.5 (Final)

※ 64bitな確認
# uname -a
Linux hoge.sakura.ne.jp 2.6.32-431.3.1.el6.x86_64 #1 SMP Fri Jan 3 21:39:27 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
ダウンロード場所さがす

ダウンロードの場所がわかりにくいですが今回はこちらからダウンロードします
http://www.imagemagick.org/script/perl-magick.php

わかりにくいですがsourceっていうリンクで右クリックして
リンクアドレスをコピーしておきます。※ perlMagickも入ってます。

f:id:tweeeety:20141107233102p:plain

ダウンロード

ダウンロードする場所とインストールする場所を個人環境で行います。

※ ダウンロード用ディレクトリを作ってコピーしたURLでダウンロード
# mkdir ~/src
# cd ~/src
# wget http://www.imagemagick.org/download/ImageMagick.tar.gz

# ls -al Image*
-rw-r--r-- 1 hoge hoge 12343166 11月  3 03:24 2014 ImageMagick.tar.gz

個人環境にImageMagicインストール

インストールも個人環境で行います。
手順はおおよそここに書いてある通りですが、configure時にオプションで個人環境を指定します
http://www.imagemagick.org/script/perl-magick.php

※ 個人環境なことを確認
# pwd
/home/hoge/src

※ 解凍
# tar zxvf ImageMagick.tar.gz

# cd ImageMagick-6.8.9-10/

※ --prefixでインストール先を指定
※ さらに-with-perlオプションをつけてconfigureでMakefileを生成
# ./configure --prefix $HOME/local/imagemagick -with-perl

※ Makefileをもとにソースコードをコンパイルやらリンクやら
# make

※ インストールする
# make install
確認

本家サイト手順でもやってますが、ldconfigコマンドで共有ライブラリの依存関係を更新します。
※ 正直必要なのかわかりませんw

# ldconfig /usr/local/lib

※ 何の数字かはわからないがuse自体はうまくいってるぽい
# perl -e "use Image::Magick; print Image::Magick->QuantumDepth"
16
補足

configureのときに-with-perlオプションをつけ忘れても自分でできるぽいです
ちゃんと試せてませんが一応のせておきます

# cd ~/src/ImageMagick-6.8.9-10/

※ perlMagick用のディレクトリが用意されてる
# ls -ald Perl* 
drwxr-xr-x 7 hoge hoge 4096 11月  7 22:08 2014 PerlMagick

# cd ./PerlMagick
# perl Makefile.PL
# make 
# make test
# make install

3. 使ってみる

適当にフリー素材をとって来てImageMagic使ってリサイズしてみます

ファイル構成はこんな感じ
# tree /home/hoge/ImageMagicTest
../ImageMagickTest/
├── imagemagick.pl
└── neko.gif

こんな感じの猫の画像をどっかからもってきました。

f:id:tweeeety:20141107233307g:plain

imagemagick.pl
#!/usr/bin/perl

use strict;
use warnings;

use Image::Magick;

my $img = Image::Magick->new;
eval{
  # エラーの場合は返り値があるのであれば表示
  my $status = $img->Read($ARGV[0]);
  warn "[STATUS] $status" if( $status );

  # 幅と高さを取得して表示してみる
  my ($w, $h) = $img->Get('width', 'height');
  warn "[width] $w [hight] $h";

  # 4分の1にリサイズしてみる
  $img->Scale(width=>$w/4, height=>$h/4);
  $img->Write("./neko2.gif");
};

if( $@ ) { warn "[ERROR] $@";}

undef $img;
1;
実行してみる
# perl imagemagick.pl neko.gif
neko.gif at imagemagick.pl line 9.
Image::Magick=ARRAY(0xc81178) at imagemagick.pl line 10.
[width] 1050 [hight] 700 at imagemagick.pl line 18.
できた画像がこれ

f:id:tweeeety:20141107233320g:plain

4. jpegについて

疲れたのでメモ程度にしか書きませんが、jpegはデフォルトで対応していないらしく
別途libjpegをインストールする必要あるらしいです。
詳しくはこちら→http://d.hatena.ne.jp/orz---orz/20070329

確かにjpegを指定するとこんな感じでエラーが出ます

[STATUS] Exception 420: no decode delegate for this image format `JPEG' @ error/constitute.c/ReadImage/501 at imagemagick.pl line 15.

まとめ

ってことでImageMagicをperlbrew環境でいまさらながら使ってみましたというおはなし! enjoy!