@blog.justoneplanet.info

日々勉強

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が遅かった。

2 Comments»

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)

RSS feed for comments on this post.TrackBack URL

Leave a comment