Drkcore

27 05 2007 perl Tweet

Image::MagickからImagerへ

FC6のこんな構成で

  • httpd-2.2.4-2.fc6
  • mod_perl-2.0.2-6.1
  • mod_fcgid-2.1-1.fc6
  • Catalyst 5.7007
  • ImageMagick-perl-6.2.8.0-4.fc6
  • ImageMagick-6.2.8.0-4.fc6

CatalystからImage::Magickが動かない。Catalyst組み込みのサーバーだとOKなんだけど、mod_perl,fcgidでは動かない。

どうも、アップロードしたファイルが読めてないようで、

my $i = Imager->new;
$i->read(file => $upload->tempname);

のところでコケテル。あーselinuxの設定か?と思って見直したんだけど、全然違った。単順にアップロードするだけならできてるし、readできてないみたい。

もうちょっと追ってみたら、

Exception 420: no decode delegate for this image format

とあってどうもImage::Magickがファイルの形式判別できてないみたいな感じ。

うーん、全然わからんなぁと悩んでたら、use Imager; という記事がナイスなタイミングで。

ナイスすぎる。早速乗り換え。

っていうかちょっと書き直しただけですぐ動いた。

my $i = Imager->new;
$i->read(file => $photo_data->tempname);
my $w = $i->getwidth();
my $h = $i->getheight();
my ($width,$height,$top,$left);
if($w > $h){
$width = $h;
$height = $h;
$top = 0;
$left = int(($w - $h)/2);
}elsif($h > $w){
$width = $w;
$height = $w;
$top = int(($h - $w)/2);
$left = 0;
}

画像を正方形にして36pxのアイコンにするという処理なので、とりあえずちょっと書き直したら動いたけど、

use Imager

例えば scale() の項目を見ると、200x200に「収まるように」小さくするには、type => 'min'、縦横比を無視してそのサイズに引き伸ばしたい場合は type => 'nonprop' というオプションをつければいいことがわかります。

minっていうオプション付けれぼ綺麗にかけそう。

そういえば、ImagerとかImage::Magick,imlib2なんかのリサイズを比較したエントリあったなと、livedoorclip探した。タグつけしないと探しづらくてあかんなぁ。

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021