2013-02-25 43 views
0

我在這裏虧本。我已經成功地上傳了一切,並用imagejpeg()命令調整了文件的質量,但是,我的imagecopyresampled函數似乎給了我一個錯誤:imagecopyresampled錯誤在PHP

警告:imagecopyresampled()期望參數1是資源,給出的字符串線394

$imgRaw = $_FILES[$file]['name']; 
    $imgRawTemp = $_FILES[$file]['tmp_name']; 

    $nameExtract = explode(".", $imgRaw); 

    $ext = $nameExtract[count($nameExtract)-1]; 

    $imgAll = getimagesize($_FILES[$file]['tmp_name']); 

    $uploadedName = time().uniqid()."_original."; 

    $dir = "usrPld/"; 

    $thisImg = $dir.$uploadedName.$ext; 

    if($imgAll['mime'] == 'image/jpeg' || $imgAll['mime'] == 'image/png') 
    { 
     if(move_uploaded_file($imgRawTemp, $thisImg)) 
     { 

      list($width, $height, $type, $attr) = $imgAll; 

      $thumbnailWidth = 250; 
      $viewingWidth = 910; 

      $thumbHeight = $thumbnailWidth*($height/$width); 
      $viewingHeight = $viewingWidth*($height/$width); 

      if($imgAll['mime'] == 'image/jpeg') 
      { 
       $image = imagecreatefromjpeg($thisImg); 
      } 
      else if($imgAll['mime'] == 'image/png') 
      { 
       $image = imagecreatefrompng($thisImg); 
      } 

      $newName = time().uniqid().".jpg"; 
      $newName2 = time().uniqid().".jpg"; 

      if($width > $viewingWidth) 
      { 
       if(imagejpeg($image, $dir.$newName, 100)) 
       { 
        if(imagecopyresampled($dir.$newName2, 
          $dir.$newName, 
          0, 0, 0, 0, 
          $viewingWidth, 
          $viewingHeight, 
          $width, 
          $height)) 
        { 
         unlink($thisImg); 
         unlink($dir.$newName); 
        } 
       } 
      } 
      else 
      { 
       if(imagejpeg($image, $dir."no_".$newName, 100)) 
       { 
        unlink($thisImg); 
       } 
      } 
     } 
    } 
    else 
    { 
     return "format error"; 
    } 

奇怪的是,我檢查$height(因爲這是錯誤被引導到),它的輸出數量像它應該。

感謝您的幫助提前。

+0

看起來像你沒有通過它的形象。參數1是'dst_image' – 2013-02-25 19:42:29

+0

它們都是ints ... – Majo0od 2013-02-25 19:45:29

+0

目標圖像是它在那裏。 – Majo0od 2013-02-25 19:46:45

回答

3

$高度不是你的問題。您將目錄路徑作爲前兩個參數傳遞給imagecopyresampled(),但它們需要成爲圖像資源。所以,你需要做這樣的事情第一:

$destImage = imagecreatetruecolor($viewingWidth, $viewingHeight); 
$sourceImage = imagecreatefromjpeg($dir.$newName); 

然後將它們傳遞給你的函數:

if(imagecopyresampled($destImage, 
         $sourceImage, 
         0, 0, 0, 0, 
         $viewingWidth, 
         $viewingHeight, 
         $width, 
         $height)) 

然後,想必你想要寫$ destImage到$ DIR $ newName2路徑。

+0

啊我想通了! – Majo0od 2013-02-25 19:58:29