2011-11-23 48 views
2

我必須調整通過Imagesmagick一個圖像,並具有在一瞬間創建2個較小的版本,它是像這樣做:結合2 imagesmagick調整大小命令

<?php 
      $command = $IMPath.'convert -limit memory 32 input.jpg -resize 500x500 biggeroutput.jpg'; 
      exec($command, $output); 
      $command = $IMPath.'convert -limit memory 32 input.jpg -resize 90 smalleroutput.jpg'; 
      exec($command, $output); 
?> 

有沒有辦法來組合這只是一位高管?無需開始轉換2次?

+0

Downvoted在我的答案無理downvote。 – CAFxX

+0

是不是我downvote -_- –

+0

我upvoted你們兩個,似乎對我有效的問答。 –

回答

1

關於優化圖像縮小步驟的主題,如果不直接回答你的問題(如CAFxX,我從來沒有看到一種方式來實現兩個輸出到一個ImageMagick命令)。

一種選擇是從第一條命令的中等大小的圖像中創建較小的縮略圖。即:

  1. 收縮高分辨率源圖像到500×500
  2. 從步驟1縮小500×500圖像到90x90

這當然有助於速度。我也在某處讀過一次(恐怕鏈接會讓我失望),這不會使質量比從全尺寸縮小到90x90更糟糕,並且實際上可以讓它看起來更好。

使用ImageMagick API可以很好地工作,因爲您只需將源映像加載到內存中一次,縮小一次,保存JPEG,然後再次縮小它,而無需將數據從1加載回內存。

1

的ImageMagick的命令行的文件中明確指出,在多個輸出端不支持:你唯一的選擇,以做到這一點是通過直接使用,而不是命令行的gdImageMagick PHP的API(提示:使用Imagick::cloneimagecreatetruecolor/imagecopy函數)。

作爲一個側面節點,通過這種方式,您還可以避免爲imagemagick客戶端產生一個單獨進程的開銷。

編輯:此外,您可能需要緩存這些備用版本,以便每次有人要求時都不必重新生成它們。在幾年前我開發的幾個圖像較重的網站上,我不得不這樣做。

+0

GD是爲了減慢我的應用程序,是ImageMagick API更快,然後直接使用Imagemagick? –

+0

我不明白它會如何變慢。此外,ImageMagick命令行的文檔清楚地表明**不支持多個輸出。 – CAFxX

+0

Downvote?爲什麼?!?!? – CAFxX