2014-01-07 164 views
2

嗨,我是新來的PHP和我正在上傳圖像和裁剪,並保存在Windows 7上zend上傳和裁剪圖像,但它給了我這些錯誤。請幫我解決這些錯誤。無法打開流:沒有這樣的文件或目錄

Warning: imagecreatefromjpeg(public/image/) [<a href='function.imagecreatefromjpeg'>function.imagecreatefromjpeg</a>]: failed to open stream: No such file or directory in C:\wamp\www\ModuleEx.com\application\modules\admin\controllers\IndexController.php on line 64

Warning: imagecopyresampled() expects parameter 2 to be resource, boolean given in C:\wamp\www\ModuleEx.com\application\modules\admin\controllers\IndexController.php on line 68

Warning: imagejpeg() [<a href='function.imagejpeg'>function.imagejpeg</a>]: Unable to open 'public/image/crop/' for writing: No such file or directory in C:\wamp\www\ModuleEx.com\application\modules\admin\controllers\IndexController.php on line 71

這是我Controller.php這樣的代碼。

if(isset($_FILES['file']['name'])){ //user upload file 
    $file_name = stripslashes($_FILES['file']['name']); 
    $ext_idx = strrpos($file_name,"."); 
    if(!$ext_idx) //hide this if ur app can upload without ext 
     echo "File invalid."; 
    else{ 
     $ext_length = strlen($file_name) - $ext_idx; 
     $extension = strtolower(substr($file_name,$ext_idx+1,$ext_length)); 
     //allowed extension 
     $ext_list = array("pdf", "doc","jpg", "jpeg", "gif", "png"); 
     if(!in_array($extension, $ext_list)) 
      echo "System can't support your extension."; 
     else{ 
      $size = (2500 * 1024); //2500 Kb 
      $file_size=filesize($_FILES['file']['tmp_name']); 
      if($file_size > $size) 
       echo "File is oversize. Max 2500 Kb."; 
      else{ 
       //change name 
       $file_name = "image".rand(10,1000).".".$extension; 

       $file_obj="public/image/".$file_name; 



       $copied = copy($_FILES['file']['tmp_name'], $file_obj); 

       if(!$copied) 
        echo "Failed."; 
       else 
       { 

        $file_data = array('file_name' => $file_name); 


        $this->view->file_obj=$file_obj; 




       } 
       } 

      } 
     } 
    } 
if ($_SERVER['REQUEST_METHOD'] == 'POST') 
{ 
$targ_w = $targ_h = 150; 
$jpeg_quality = 90; 
$src = "public/image/".$file_name; 

$img_r = imagecreatefromjpeg($src); 
$dst_r = ImageCreateTrueColor($targ_w, $targ_h); 

imagecopyresampled($dst_r,$img_r,0,0,(int)$_POST['x'],(int)$_POST['y'], 
$targ_w,$targ_h,(int)$_POST['w'],(int)$_POST['h']); 

//header('Content-type: image/jpeg'); 
    imagejpeg($dst_r,"public/image/crop/".$file_name,$jpeg_quality); 

    } 
+0

也請發表您的圖像裁剪代碼。 – shruti

+0

imagecreatefromjpeg預計圖像不是必須創建圖像的路徑。遵循http://www.php.net/manual/en/function.imagecreatefromjpeg.php –

+0

@ssk我已經發布的代碼,請檢查它 – Tuhin

回答

3

看看這個「imagecreatefromjpeg(public/image /)」 - 這不是一個圖像資源。它只有一個有效的文件資源就像

imagecreatefromjpeg('public/image/test.jpg'); 
1
Warning: imagecreatefromjpeg(public/image/) 

您的路徑是不正確的,你應該使用絕對路徑與__DIR__例如。

imagecreatefromjpeg(__DIR__."public/image/test.jpg"); 

並且您的文件名缺失。下一個錯誤是由於您的圖像無法加載的第一個錯誤導致的。

+0

但我已經在index.php文件中定義的根路徑 – Tuhin

2

試試這個代碼:

$a="./images/".$file_name; 
    list($width, $height) = getimagesize($a); 
    $newwidth = "300"; 
    $newheight = "200"; 
    $thumb = imagecreatetruecolor($newwidth, $newheight); 
    $source = imagecreatefromjpeg($a); 
    imagecopyresized($dest, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); 
    imagejpeg($dest, $a, 100); 
相關問題