2015-09-09 66 views
1

我正在構建一個管理員應該能夠上傳圖像的網站。如果圖片大於2MB,則會因爲限制而失敗。但即使沒有限制,因爲訪問者的加載時間,調整圖像大小仍然會更好。PHP在上傳前調整圖像大小

圖像不應該超過800像素,高度並不重要,因爲它永遠不會很大。 我現在想要做的是調整圖像的大小,使寬度爲800px或更低,高度按相同的比例調整大小。

我現在擁有的是以下幾點:

if (!empty($_FILES)) 
{ 
    $upload_dir = 'photos'; 
    $tempFile = $_FILES['file']['tmp_name']; 

    $targetPath = dirname(__FILE__) . DIRECTORY_SEPARATOR . $upload_dir . DIRECTORY_SEPARATOR; 
    $mainFile = $targetPath . time() . '-' . $_FILES['file']['name']; 

    list($w, $h) = getimagesize($tempFile); 
    if ($w > 800) 
    { 
     $ratio = 800/$w; 
     $newHeight = $ratio * $h; 

     $tempFile = imagescale($tempFile, 800); 
    } 

    move_uploaded_file($tempFile, $mainFile); 
} 

但這並不做任何事情。

我使用dropzone與此腳本作爲圖像輸入的目標。

有人能指出我正確的方向嗎? 或者PHP已經嘗試上傳圖像,一旦它在$_FILES?如果是這樣,我不知道如何解決它。然後它應該調整之前 dropzone調用此腳本。

回答

0

我建議使用WideImage。然後你可以使用這樣的resize()

WideImage::load('big.png')->resize(50, 30)->saveToFile('small.jpg');