GDとImageMagickの速度を比較してみた
■GD
以下のようなコードを用いてGDで合成画像を1000枚生成した時の時間を調べた。
$layers = array( 0 => 'dress_back.png', 1 => 'dress_back.png', 2 => 'body.png', 3 => 'dress.png', 4 => 'bag.png', 5 => 'bag.png', 6 => 'face.png', 7 => 'hear.png', 8 => 'teara.png', ); $start = microtime(true); for($i = 0; $i < 10; $i++){ $image = imagecreatefrompng("background.png"); foreach($layers as $key => $value){ $layer = imagecreatefrompng($value); imagecopy($image, $layer, 0, 0, 0, 0, 410, 454); } imagegif($image, "image{$i}.gif"); } $end = microtime(true); print($end - $start); /* * windows * 10 => 0.27269101142883 * 100 => 2.1620790958405 * 1000 => 24.812913894653 * * linux * 10 => 0.21701502799988 * 100 => 2.1362149715424 * 1000 => 21.695859193802 */
■ImageMagic
以下のようなコードを用いてImageMagickで合成画像を1000枚生成した時の時間を調べた。
$layers = array( 0 => 'dress_back.png', 1 => 'dress_back.png', 2 => 'body.png', 3 => 'dress.png', 4 => 'bag.png', 5 => 'bag.png', 6 => 'face.png', 7 => 'hear.png', 8 => 'teara.png', ); set_time_limit(0); //$path = 'C:\xampp\htdocs\local.sample.org\public_html\\'; $path = '/home/local.sample.org/trunk/public_html/imagick/'; $start = microtime(true); for($i = 0; $i < 1000; $i++){ $image = new Imagick("{$path}background.png"); foreach($layers as $key => $value){ $layer = new Imagick($path . $value); $image->compositeImage($layer, $layer->getImageCompose(), 0, 0); } $image->writeImage("{$path}image{$i}.gif"); } $end = microtime(true); print($end - $start); /* * windows * 10 => 2.2297260761261 * 100 => 24.065160989761 * 1000 => 247.36853098869 * * linux * 10 => 0.33637809753418 * 100 => 3.3278291225433 * 1000 => 33.274304866791 */
■結果
Linuxの場合は1.5倍ImageMagickが遅かった。Windowsの場合は10倍ImageMagickが遅かった。
TrackBack URL :
Comments (2)
HI 你好!
有几个问题请教
1.あなたは、ファイルサイズを変換する?
2.これまでにImageMagickのためのパラメータ最適化を行うことを試みた?
3.私はプロジェクトを持って、あなたが変換してサムネイル画像を大量に行う必要があると、次の共有にどのような予定ですか?
Thank you for questions!!
>1
Maybe I use images of following size:
240 x 320
>2
I don’t use any parameters.
I just write codes using methods of PHP ImageMagick simply.
That is why you can make them more quickly.
sorry!
>3
Excuse me.
I don’t understand you meant.
Would you explain them again? (in English)