June 20, 2004
ねこみみかうんたを設置した その3
ねこみみかうんた(サイドバーのいちばん下に配置されているねこみみ萌えキャラのアクセスカウンタ)の画像の回転にはgdというライブラリを使っているのだが、ご覧になれば分かるとおり、線が荒れてしまっていまいちよろしくない。そこでPHPで画像を回転するソリューションが他にないかと調べてみるとImageMagickを使えることが分かったので試してみた。
ImageMagickをPHPから呼び出すためのラッパはいくつも公開されている。ねこみみかうんたでは画像の回転だけができれば十分なので、回転ができて使いやすいものということで、www.bokko.nlってサイトで公開されている"PHP ImageMagick Class"というのを使うことにした。
"PHP ImageMagick Class"の使い方を簡単に説明する。fedora core 2ならばImageMagickはデフォルトでインストールされている。imagemagick_class.phpの
var $imagemagickdir = '/usr/local/bin';
のパスを'/usr/bin'に書き換えれば問題なく使うことが出来る。
また、ImageMagickクラスのインストラクタだが、 $_FILE(HTTPポストされた画像データ)を引数に取るようになっていて使いづらい。ローカルパスを指定できるようにするには以下のようにする。
function ImageMagick($filename)
{
$this->temp_file = time().ereg_replace("[^a-zA-Z0-9_.]", '_', $filename);
if(!@rename($filename, $this->temp_dir.'/tmp'.$this->count.'_'.$this->temp_file))
die("Imagemagick: Upload failed");
$this->file_history[] = $this->temp_dir.'/tmp'.$this->count.'_'.$this->temp_file;
$this->GetSize();
}
ライブラリの使用方法はとっても簡単。典型的な使い方はこんな感じ。
$img = new ImageMagick("./hoge.gif");
$img->setTargetdir($targetdir);
//ここに回転だの何だのの処理を書く
$img->Convert('gif');
$filename = $img->Save();
$img->CleanUp();
コンストラクタの引数に読ませたい画像のパスを。読める形式はgif, png, jpg。他にも読めるかも知れない。setTargetdirで画像を保存するパス、Convertで出力する画像の形式を指定。'gif','png','jpg'のいずれかを設定できる。Saveで画像を保存、CleanUpで後処理。簡単ですね。どんな加工ができるかはImageMagickのサイトなりを参照してくださいな。
で、出来上がったのを比較してみる。

左はgd、右はImageMagickで画像の回転をおこなったもの。
……ほとんど変わりません。ImageMagickのほうが、ややジャギーが目立たないかなあ、というくらい。ImageMagickのほうの数字の部分でいくつか色が抜けてますが、何でだろう。まあいいや。ImageMagickはgdに比べて処理速度が遅いので、けっきょく元通りにgdを使うことにしました。
Trackback
You can ping this entry by using http://windy.ac/MT/mt-tb.cgi/414 .
障blog紮障蕁眼障 綵泣ゃ罸篏≧≪祉鴻潟帥若潟帥泣ゃс違綵泣ゃ≪祉鴻...
