8

膨大な量のサムネイルを作成する必要があります。現在、ImageMagickを使用していますが、効率が悪すぎます(速度が遅すぎる、CPU /メモリの使用量が多すぎるなど)。

私はGraphicsMagickの評価を開始しました。これは、「すごい」結果が得られると期待していました。聞き取れませんでした。誰かが私のベンチマークスクリプトを簡単に見ることができますか(単純な速度とファイルサイズの比較のみを行います。CPUとメモリのチェックはまだありません):

http://pastebin.com/2gP7Eaxc

これが私が得たサンプル出力です:

'gm convert' took 75.0039 seconds to execute 10 iteration(s).
'convert' took 83.1421 seconds to execute 10 iteration(s).
Average filesize of gm convert: 144,588 bytes.
Average filesize of convert: 81,194 bytes. 

GraphicsMagickはそれほど高速ではなく、出力されるファイルサイズはImageMagickよりも大幅に大きくなります。

4

3 に答える 3

2

親指を必要とするある種の画像のキューがあり、アプリはそれらを介して動作すると思いますか?作業の一部をEC2のようなものに吸い上げることを検討できます。キューが特定のサイズを超えた場合は、代わりにロードを処理するために事前に準備されたEC2インスタンスを起動します。キューが大きい場合は、複数のマシンを起動することもできます。

これらのインスタンスを常に実行する必要はありません。自分のサーバーが負荷を処理できない場合にのみ必要です。

明らかに、それが価値があるかどうかを確認するためにコストを予測する必要がありますが、使用する時間に対してのみ支払うことを考えると、価格は8.5c /時間から始まり、ニーズに十分に経済的かもしれません。

于 2010-09-16T00:19:47.500 に答える
1

GD2を使いたいのですが、使っているこの機能を試してみてください。使い方はとても簡単です。

function scaleImage($source, $max_width, $max_height, $destination) {
    list($width, $height) = getimagesize($source);
    if ($width > 150 || $height > 150) {
    $ratioh = $max_height / $height;
    $ratiow = $max_width / $width;
    $ratio = min($ratioh, $ratiow);
    // New dimensions
    $newwidth = intval($ratio * $width);
    $newheight = intval($ratio * $height);

    $newImage = imagecreatetruecolor($newwidth, $newheight);

    $exts = array("gif", "jpg", "jpeg", "png");
    $pathInfo = pathinfo($source);
    $ext = trim(strtolower($pathInfo["extension"]));

    $sourceImage = null;

    // Generate source image depending on file type
    switch ($ext) {
        case "jpg":
        case "jpeg":
        $sourceImage = imagecreatefromjpeg($source);
        break;
        case "gif":
        $sourceImage = imagecreatefromgif($source);
        break;
        case "png":
        $sourceImage = imagecreatefrompng($source);
        break;
    }

    imagecopyresampled($newImage, $sourceImage, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

    // Output file depending on type
    switch ($ext) {
        case "jpg":
        case "jpeg":
        imagejpeg($newImage, $destination);
        break;
        case "gif":
        imagegif($newImage, $destination);
        break;
        case "png":
        imagepng($newImage, $destination);
        break;
    }
    }
}
于 2010-09-15T23:42:31.573 に答える
1

ExactImageを使用することをお勧めします。ベンチマークによると、ImageMagickよりも高速です。

于 2011-08-19T12:42:51.073 に答える