新しいblogに移行しました

新ブログ "All Yout Bugs Are Belong To Ass" に移行しました!

2011-11-16

[perl]perlbrewな環境下でImage::Magickを使いたくなったのでセットアップしたというお話

「Imagerじゃないとかマジウケるんですけどw」的なツッコミは予測済みですが、Webサービスに組み込む機能として、PDF→JPEGな変換を行うのに、もっともスマートな方法としてImage::Magick(=PerlMagick)しか見つけられなかったのです。もっといい方法あったら教えてください!

まずはimagemagickをインストール

で、PerlMagick使うためにはホストにimagemagickが入ってないといけないんですけど、これをroot権限で入れるのは別に難しくない。のですが、perlbrewな環境となると、root権限?何それおいしいの?状態なので、今回は$HOME/local 以下にimagemagickをインストールする方法をとります。

$ mkdir $HOME/local
$ mkdir $HOME/src
$ cd $HOME/src
$ wget ftp://ftp.kddlabs.co.jp/graphics/ImageMagick/ImageMagick-6.7.3-6.tar.gz
$ tar zxvf ImageMagick-6.7.3-6.tar.gz
$ cd ImageMagick-6.7.3-6
### prefixは必須、そのほかお好みでオプションつけてください
$ ./configure --prefix $HOME/local/imagemagick 
$ make
$ make install

ここまでできれば、$HOME/local/imagemagick/bin 以下にconvertなどのimagemagickのコマンド群が配置され、
$ $HOME/local/imagemagick/bin/convert foo.pdf bar-%03d.jpg
みたいにPDF→JPEG変換ができるようになると思います。

PerlMagickのインストール


本当ならここで、
$ cpanm Image::Magick

とかできればいいんですけど、これやってみたらここに書いてあるような現象に見舞われました。
なので、ソースディレクトリの下にあるPerlMagickをインストールすることにします。
$ cd ./PerlMagick
$ perl Makefile.PL
$ make 
$ make test
$ make install

最後のmake installの時に
Files found in blib/arch: installing files in blib/lib into architecture dependent library tree
Installing /home/ytnobody/perl5/perlbrew/perls/perl-5.12.3/lib/site_perl/5.12.3/x86_64-linux/auto/Image/Magick/Magick.so
Installing /home/ytnobody/perl5/perlbrew/perls/perl-5.12.3/lib/site_perl/5.12.3/x86_64-linux/auto/Image/Magick/Magick.bs
Installing /home/ytnobody/perl5/perlbrew/perls/perl-5.12.3/lib/site_perl/5.12.3/x86_64-linux/auto/Image/Magick/autosplit.ix
Installing /home/ytnobody/perl5/perlbrew/perls/perl-5.12.3/lib/site_perl/5.12.3/x86_64-linux/Image/Magick.pm
Installing /home/ytnobody/perl5/perlbrew/perls/perl-5.12.3/man/man3/Image::Magick.3
Appending installation info to /home/ytnobody/perl5/perlbrew/perls/perl-5.12.3/lib/5.12.3/x86_64-linux/perllocal.pod
みたいに出てくれば、インストール完了です。

PerlでPDF→JPEG変換してみよう

とりあえず小さく書いてみました。
use strict;
use Image::Magick;

my $i = Image::Magick->new;

$i->Read( $ARGV[0] );
$i->Write( 'output-%03d.jpg' );

で、実際にPDFをJPEGにするときは、
$ perl ./imager.pl hachiojipm_10_LT_ytnobody.pdf
とかすると、こんな具合に
$ ls -l *.jpg
-rw-rw-r-- 1 ytnobody ytnobody 17787 11月 16 15:31 output-000.jpg
-rw-rw-r-- 1 ytnobody ytnobody  3362 11月 16 15:31 output-001.jpg
-rw-rw-r-- 1 ytnobody ytnobody  5223 11月 16 15:31 output-002.jpg
-rw-rw-r-- 1 ytnobody ytnobody 12139 11月 16 15:31 output-003.jpg
-rw-rw-r-- 1 ytnobody ytnobody 13849 11月 16 15:31 output-004.jpg
-rw-rw-r-- 1 ytnobody ytnobody 32502 11月 16 15:31 output-005.jpg
-rw-rw-r-- 1 ytnobody ytnobody 39353 11月 16 15:31 output-006.jpg
-rw-rw-r-- 1 ytnobody ytnobody 14955 11月 16 15:31 output-007.jpg
-rw-rw-r-- 1 ytnobody ytnobody 46003 11月 16 15:31 output-008.jpg
-rw-rw-r-- 1 ytnobody ytnobody 34576 11月 16 15:31 output-009.jpg
-rw-rw-r-- 1 ytnobody ytnobody  5327 11月 16 15:31 output-010.jpg
-rw-rw-r-- 1 ytnobody ytnobody 15200 11月 16 15:31 output-011.jpg
-rw-rw-r-- 1 ytnobody ytnobody 10807 11月 16 15:31 output-012.jpg
-rw-rw-r-- 1 ytnobody ytnobody  7135 11月 16 15:31 output-013.jpg
-rw-rw-r-- 1 ytnobody ytnobody 12210 11月 16 15:31 output-014.jpg
-rw-rw-r-- 1 ytnobody ytnobody  7920 11月 16 15:31 output-015.jpg
-rw-rw-r-- 1 ytnobody ytnobody  7375 11月 16 15:31 output-016.jpg
-rw-rw-r-- 1 ytnobody ytnobody  8818 11月 16 15:31 output-017.jpg
-rw-rw-r-- 1 ytnobody ytnobody  8524 11月 16 15:31 output-018.jpg
-rw-rw-r-- 1 ytnobody ytnobody  7237 11月 16 15:31 output-019.jpg
-rw-rw-r-- 1 ytnobody ytnobody 11853 11月 16 15:31 output-020.jpg
-rw-rw-r-- 1 ytnobody ytnobody  6681 11月 16 15:31 output-021.jpg
-rw-rw-r-- 1 ytnobody ytnobody  6142 11月 16 15:31 output-022.jpg
-rw-rw-r-- 1 ytnobody ytnobody  6012 11月 16 15:31 output-023.jpg
-rw-rw-r-- 1 ytnobody ytnobody 44886 11月 16 15:31 output-024.jpg
-rw-rw-r-- 1 ytnobody ytnobody  5473 11月 16 15:31 output-025.jpg
-rw-rw-r-- 1 ytnobody ytnobody  3592 11月 16 15:31 output-026.jpg
-rw-rw-r-- 1 ytnobody ytnobody  3880 11月 16 15:31 output-027.jpg
-rw-rw-r-- 1 ytnobody ytnobody 27537 11月 16 15:31 output-028.jpg
-rw-rw-r-- 1 ytnobody ytnobody  9094 11月 16 15:31 output-029.jpg
-rw-rw-r-- 1 ytnobody ytnobody 13211 11月 16 15:31 output-030.jpg
-rw-rw-r-- 1 ytnobody ytnobody 45757 11月 16 15:31 output-031.jpg
-rw-rw-r-- 1 ytnobody ytnobody  7093 11月 16 15:31 output-032.jpg
-rw-rw-r-- 1 ytnobody ytnobody 49141 11月 16 15:31 output-033.jpg
-rw-rw-r-- 1 ytnobody ytnobody 35089 11月 16 15:31 output-034.jpg
画像ファイルがボコボコ出来上がります。まあ当たり前ですねw

0 件のコメント: