画像合成の高速化
cakephpとは直接関係ありませんが、画像合成のプログラムを作っています。
定石通り(?)ImageMagickのconvertコマンドを実行して処理しようとしているのですが、なかなか速度がでない。(500x500に1回合成で、0.18s)
ウノウさんのブログでも、k-tai.orgさんでも、直接convertコマンドを呼んでいるみたいなのですが、どのような高速化をしているんだろう。。。
http://ke-tai.org/blog/2008/06/30/imgnoforward/
グーグル先生にお知恵を拝借したところ、ちらほら、GraphicsMagickが良いみたいなURLがありました。
http://akimoto.jp/blog/2009/04/05/flickr-php5-migration-performanc/
http://www.graphicsmagick.org/benchmarks.html
ということで、ImageMagickから、その派生ソフトウェアであるGraphicsMagickを使ってみました。そうすると、、、おぉ!!!!
合成処理をtimeコマンドで比較してみたところ、速度面では7,8割増の性能を得ました!以下の例は、480x500の画像ファイル(Base.jpg 16bit)にい250x250(item.gif)を合成(out.jpg)しています。
#time convert base.jpg item.gif -geometry +0-0 -composite out.jpg
real 0m0.181s
user 0m0.443s
sys 0m0.025s
#time gm composite -geometry +0+0 itme.gif base.jpg out.jpg
real 0m0.103s
user 0m0.251s
sys 0m0.012s
んー、GraphicsMagickにするか。な。。