私は最近、同じ問題に走ったが、私は私だけではなく、コマンドラインのPHPクラスimagickを使用していますが、私はカット300xbestFitまたはbestFitx300
に、元の2592x1944からそれらのサイズを変更するには、一度画像を通過しました私の場合、半分の時間は-scaleまたはscaleImageに変更します。ここに私のテストコードのスニペットがあります。
while ($images = readdir($handle)) {
// check to see if the first or second character is a '.' or '..',
// if so then remove from list
if (substr($images,0,1) != '.') {
//Check files to see if there extensions match any of the following image extensions.
// GLOB_BRACE looks for all glob criteria within the {braces}
$images = glob($dir."{*.gif,*.jpg,*.png,*.jpeg}", GLOB_BRACE);
// the glob function gives us an array of images
$i = 0;
foreach ($images as $image) {
// parse the data given and remove the images/ $dir,
// imagemagick will not take paths, only image names.
$i++;
list ($dir, $image) = split('[/]', $image);
echo $i, " ", $image, "<br />";
$magick = new Imagick($dir."/".$image);
$imageprops = $magick->getImageGeometry();
if ($imageprops['width'] <= 300 && $imageprops['height'] <= 300) {
// don't upscale
} else {
// 29 Images at 2592x1944 takes 11.555036068 seconds ->
// output size = 300 x 255
$magick->scaleImage(300,300, true);
// 29 Images at 2592x1944 takes 23.3927891254 seconds ->
// output size = 300 x 255
//$magick->resizeImage(300,300, imagick::FILTER_LANCZOS, 0.9, true);
$magick->writeImage("thumb_".$image);
}
}
}
}
私は2592x1944の29枚の画像を処理し、11.555036068秒に23.3927891254秒から行ったのです。私はこれが役立つことを願っています
編集:私は、私はちょうどImageMagick v6 Examples -- API & Scriptingに、役に立つかもしれません以下、へへ走った上で言ったことに加えて
:。
「シェルスクリプトは、本質的に低速であることこれはもちろん、 複数のステップとディスクへの余分なファイル処理が必要です。これはもちろん、 新しいIM v6オプションの処理のおかげで、 の多数の画像処理操作を1つのカンマで行うことができますnd。でも ので、あなたはめったにあなたが頻繁にあなたが望むものを達成するために複数のコマンドを使用する必要が 単一convert
のコマンドですべてを行いませんので、できることができます。「
を」大や画像のさえ多数を読んだとき、それは IMは彼らが は、このようにそのメモリ要件を削減する、完全な画像に読み取らないよう、Read Modifier にリサイズを使用するか、またはそれらをトリミング。「
」あなたはApacheモジュールとしてのImageMagickを呼び出した場合、それはまた、意志へのより良いです部品が一度ロードされ、のために利用可能なので、 の起動時間を短縮してください複数回の再ロードを繰り返す必要はありません。これは 恒久的に実行している 「デーモン」IMプロセスと将来的にはより実用的になることがあります。」
は奇妙に聞こえるあなたは問題を隔離しようとすることができ、他のものより実質的に遅い3のいくつかのあなたは何をコマンド・ライン・アイテムを試している場合は1ずつ。?? - 別に1つ?サーバーは、undあまりにも重い荷物? – Edu
OK。私は最初に(アップロードされた4つの)画像の生成されたバージョンが直ちに作成されることを知りました。しかし、他のもの(第2、第3、第4)は長い時間がかかります... –
おそらくImageMagickの新しいインスタンスが変換ごとに開始され、最初の3つが高速であれば、私にはコードが問題です。あなたにそれを正確に示すことはできません。 : – Edu