我的網站的用戶上傳圖像,用作頭像。我已經設置了2 MB的上傳限制大小。在大多數地方,我只需要縮略圖。但用戶上傳圖像的分辨率要高得多。我將這些文件存儲在我的文件系統上。減少用戶頭像的大小? - 創建縮略圖
如何創建縮略圖並將其存儲爲大型文件?
我的網站的用戶上傳圖像,用作頭像。我已經設置了2 MB的上傳限制大小。在大多數地方,我只需要縮略圖。但用戶上傳圖像的分辨率要高得多。我將這些文件存儲在我的文件系統上。減少用戶頭像的大小? - 創建縮略圖
如何創建縮略圖並將其存儲爲大型文件?
根據您的安裝/服務器設置,您有幾種可能性。
imagecopyresized
功能Imagick extension
,讓人覺得其thumbnailImage
方法。我會說,我已經很從來沒有見過沒有GD服務器安裝 - 爲Imagick,它不太可能被默認安裝:-(
另一種解決方案可能是調用convert命令行實用工具(它與ImageMagick的 - independantly的任何PHP擴展)。,使用類似exec
叫它
優勢,與,是,你將不會被memory_limit
的限制,作爲調整大小當然,這也意味着你的應用程序將依賴於一個外部工具,這並不總是很好...
如果有必要,有很多關於教程的教程GD;例如,那些你可能感興趣的:
如果您的PHP設置中安裝了Imagick。然後有一個功能可以做到這一點。 Imagick::thumbnailImage()
如果您沒有Imagick,那麼GD庫會派上用場。由於他們有imagcopyresized()
退房GD庫,特別是imagecopyresized function
可以使用GD module或ImageMagick module來調整和收縮,任意上傳的圖片。
如果你谷歌周圍的東西像「PHP圖像調整器」,你會發現很多的例子。我傾向於使用GD,因爲我有一些老舊的代碼可以很好地工作。假設你有$srcImgPath
發現已知上傳JPEG圖像,你可以不喜歡以下,其中$newWidth
和$newHeight
是圖像的新的大小你想要的:
list($width, $height, $type) = getimagesize($srcImgPath);
$srcImg = imagecreatefromjpeg($srcImgPath);
if ($srcImg === false) return false;
$workImg = imagecreatetruecolor($newWidth,$newHeight);
imagecopyresampled($workImg,$srcImg,0,0,0,0,$newWidth,$newHeight,$width,$height);
imagejpeg($workImg,$newFilename,$quality);
功能化作爲適當,一定要指定$quality
。您也可以很容易地將這些代碼抽象出來處理gif和png。
Google AppEngine是不是裝有PIL的子集?有可以使用的'調整大小'功能......並且最重要的是,您可以獲得免費配額!
只是簡單的說明,如果沿着GD路線走,使用imagecopyresampled,因爲它會產生更清晰的圖像。我的意思是它不會看起來像顆粒感和/或像素。
鏈接到該函數的PHP手冊:http://us2.php.net/manual/en/function.imagecopyresampled.php
我會建議的timthumb.php腳本。它堅如磐石。 http://www.darrenhoyt.com/2008/04/02/timthumb-php-script-released/
它包含一個嚴重的安全漏洞http://markmaunder.com/2011/08/01/zero-day-vulnerability-in-many-wordpress-themes/儘管如此,確保你從http://獲得最新的一個code.google.com/p/timthumb/ – Kurt
但我沒有使用Google AppEngine。 –
這只是一個建議......自由週期總是很酷,不是? – jldupont