2010-07-05 172 views
0

在我網站的早期階段,我允許用戶上傳他們想要的任意大小的圖像。我現在有客戶端和服務器端配置,以將新圖像限制爲最大2000px,同時保持原始比例。使用PHP和ImageMagick調整大小圖像大小

所以從舊的配置我有一大堆圖像的目錄,我需要縮小,我想在服務器端批量(由於客戶端的帶寬限制),以及對於生活我無法解決問題。我意識到它會導致服務器端高CPU,所以我會在幾天內分組。

由於主機RAM限制,我不能使用GD進行縮放,所以我有ImageMagick對我有用。

我將在1個批次做的基團的實例如下所示:
/圖像/ 01/101/abc.jpg的
/圖像/ 01/101/random.jpg
/圖像/ 01/101/randomfile.jpg
/圖像/ 01/184/random.jpg
/圖像/ 01/184/photo.jpg
/圖像/ 03/372/randomnumber.jpg
/圖像/ 03/372/randomanything.jpg

所以我追求的東西它可以:

  • Recursivly經過的所有目錄和子目錄尋找JPG文件,當它發現一個 -
    • 制定出流動比率
    • 重命名原始文件origional.jpg.old
    • 調整該文件以在高度/寬度2000像素一個最大值,同時使用origional.jpg文件名
    • 檢查日mainting寬高比
    • 寫入文件保存到磁盤在新的origional.jpg是一個有效的開心文件
      • ,如果它的一個快樂的文件刪除origional.jpg.old
  • 然後處理下一個文件/文件夾。

我被卡住了,並且會喜歡任何幫助。

感謝 格雷格

+0

順便說一下,我還可以使用cpanel Image Scaler,如果有人知道如何在批處理中使用它? – gggggggg 2010-07-05 04:00:26

+0

我在這裏還是個新人,所以如果這個評論是毫無根據的,請原諒我,但這看起來很像是要求人們爲你做你的工作。你究竟在幹什麼?你已經給了我們足夠的規格來編寫程序,但不知道你實際做了什麼或者遇到了什麼問題。 – Fosco 2010-07-05 04:05:59

回答

2

遞歸遍歷所有的目錄和尋找JPG格式子目錄,當它與RegexIterator找到一個

使用RecursiveDirectoryIteratorRecursiveIteratorIterator組合,可能在一起。這個網站有幾個例子。

工作出電流比

不必要的。

重命名原始文件origional.jpg.old

rename

調整文件的2000像素在高度/寬度一個最大,而mainting長寬比

Imagick::resizeImage參見或Imagick::scaleImage。使用origional.jpg文件名

Imagick::writeImage

檢查新origional.jpg是一個有效的開心文件

不必要

寫文件到磁盤。

,如果它的一個快樂的文件刪除origional.jpg.old

unlink

+0

謝謝你,應該給我我需要的東西,謝謝你的幫助。 – gggggggg 2010-07-05 04:23:34