はじめに
ImageMagicはすでにインストールしてしまってる(もしくはしてなくてもOK)が
perlbrewな個人環境で使いたいのでrootで入れたImageMagicでは扱えない。
そんな時のメモ。
ってことで、個人環境に ImageMagicとperlMagicを入れます。
ながれ
- 個人環境にImageMagicダウンロード
- 個人環境にImageMagicインストール
- 使ってみる
- 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も入ってます。
ダウンロード
ダウンロードする場所とインストールする場所を個人環境で行います。
※ ダウンロード用ディレクトリを作ってコピーした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
こんな感じの猫の画像をどっかからもってきました。
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.
できた画像がこれ
- neko2.gif
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!