2015-10-16 85 views
0

有人可以幫我找出爲什麼這個功能不起作用形式。php創建服務器上的圖像縮略圖

給函數的參數是:
$ pathToImages是一個完整的路徑開始$ _SERVER [「DOCUMENT_ROOT」]
$ pathToThumbs是它實際上是一個名爲$ pathToImages

內的子文件夾「大拇指」的網址
function createThumbs($pathToImages, $pathToThumbs) { 
    $dir = opendir($pathToImages); 
    while (false !== ($fname = readdir($dir))) { 
     if (is_file($pathToImages . $fname)) { 
      $info = pathinfo($pathToImages . $fname); 
      if (strtolower($info['extension']) == 'jpg' || strtolower($info['extension']) == 'jpeg') { 
       list($width, $height, $type) = getimagesize($pathToImages . $fname); 
       switch ($type) { 
        case 1: $img = imagecreatefromgif($pathToImages . $fname); 
        break; 
        case 2: $img = imagecreatefromjpeg($pathToImages . $fname); 
        break; 
        case 3: $img = imagecreatefrompng($pathToImages . $fname); 
        break; 
        case 6: $img = imagecreatefromwbmp($pathToImages . $fname); 
        break; 
        default: $img = imagecreatefromjpeg($pathToImages . $fname); 
       }; 
       $maxWidth = 164; 
       $maxHeight = 164; 
       if ($width > $height) { 
        $new_width = $maxWidth; 
        $new_height = floor($height * ($maxWidth/$imgw)); 
       } else { 
        $new_height = $maxHeight; 
        $new_width = floor($width * ($maxHeight/$height)); 
       }; 
       $tmp_img = imagecreatetruecolor($new_width, $new_height); 
       // imagecopyresized($tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height); 
       imagecopyresampled($tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height); 
       imagejpeg($tmp_img, $pathToThumbs . $fname); 
       imagedestroy($tmp_img); 
       imagedestroy($img); 
      }; 
     }; 
    }; 
    closedir($dir); 
} 
+0

歡迎來到Stack Overflow。我已經修復了您的帖子中的一些英文問題。我也通過在行尾使用兩個空格來分隔參數描述。 這將有助於瞭解它如何失敗。是否有錯誤訊息? –

+0

親愛的Rohit Gupta! 感謝您的編輯。 我發現錯誤:它是一個錯誤的變量名稱:$ imgw而不是$ width。我花了一整天的時間看着這段代碼,我覺得我在這一點上太過努力了。 – ucsendre

回答

0

功能對我來說很不錯。 也許拇指的目錄不是由PHP用戶創建的,因此您的腳本無權在目錄中寫入數據。 嘗試使用

mkdir($pathToThumbs); 

通過創建的PHP /拇指目錄,並使用

chmod($pathToThumbs,755); 

給了正確的權限。

否則請提供錯誤信息。 ;)

+0

親愛的FlorianR! 我在opendir和每一個GD funcion調用之後都運行了「or die」測試的代碼 - 它在imagecopyresampled之後失敗。 幾個小時後,我發現錯誤的變量命名是問題。 謝謝你的努力! – ucsendre