2011-08-14 109 views
1

我試圖使用圖像處理類來創建圖像的縮略圖。這裏是我的相關方法:使用CodeIgniter創建圖像縮略圖的問題

public function create_thumbnail($source_img, $name, $file_ext) 
{ 
    $config['image_library'] = 'gd2'; 
    $config['source_image'] = $source_img; 
    $config['create_thumb'] = TRUE; 
    $config['maintain_ratio'] = TRUE; 
    $config['width'] = 50; 
    $config['new_image'] = 'C:\xampp\htdocs\\' . $name . 't' . $file_ext; 

    $this->load->library('image_lib', $config); 
    if(!$this->image_lib->resize()) 
    { 
     echo $this->image_lib->display_errors();exit; 
    } 
    return TRUE; 
} 

當運行該腳本,我得到這個錯誤:

Unable to save the image. Please make sure the image and file directory are writable. 

數組元素$config['new_image']評估爲這樣的事情:C:\xampp\htdocs\EuzIDct.jpg,所以我知道它不是。源文件在調用方法時也存在,所以它也不是這樣。

有沒有人有任何線索這裏發生了什麼?我谷歌的問題,但CI論壇的解決方案是說指定一個絕對路徑,也不是相對的,這是我正在做的事情,但唉,它不工作。

謝謝!

+0

你在Windows,Mac或Linux上嗎? –

+0

Windows認爲「C:\ xampp \ htdocs \\」已將它送走,對不起。 – Josh

+0

我的不好。該文件是隻讀的嗎?右鍵單擊它並檢查它的屬性... –

回答

0

首先嚐試刪除文件路徑中額外的反斜槓。

C:\xampp\htdocs\ 

接下來,右鍵單擊並檢查該目錄上的文件權限。

如果失敗,以管理員身份運行xampp服務器作爲短期修復程序,以查看它是否存在其他權限問題。

0

可能您正在運行權限問題。只是試圖改變你的文件夾權限。 儘管您的image_lib-> resize()方法並不正確,但我幾乎不建議您使用其他方式調整這些圖像的大小。通常,777權限在安全性方面暴露您的應用程序。 我建議使用FTP來移動這些縮略圖,而不是codeigniter image_lib。 如果仍然堅持使用寫入權限,請右鍵單擊C:\ xampp \ htdocs \ - >屬性,選項卡安全性,編輯,爲每個用戶添加用戶並授予他完全訪問權限(windows)。對於Linux-Mac,只需一個簡單的chmod -R 777.

0

我以前有過這個問題。在我的情況下,我把圖像源和new_image沒有base_url或REAL_PATH:

public function create_thumbnail($file_name='2012_02_23_15_06_00_1.jpg'){ 
    $config['image_library'] = 'gd2'; 
    $config['source_image'] = 'assets/img/content/article/'.$file_name; 
    $config['create_thumb'] = FALSE; 
    $config['maintain_ratio'] = TRUE; 
    $config['width'] = 210; 
    $config['height'] = 160;  
    $config['new_image'] = 'assets/img/content/article/thumb/thumb_' . $file_name; 

    $this->load->library('image_lib', $config); 
    if(!$this->image_lib->resize()) 
    { 
     echo $this->image_lib->display_errors();exit; 
    } 
    return TRUE; 
} 

請參閱? 你不把

$config['new_image'] = 'assets/img/content/article/thumb/thumb_' . $file_name; 

使用base_url(),無論是你的image_source或您new_image將有前綴http://domain_or_localhost

使用REAL_PATH像C://htdocs/blablabla/只是複雜的事情,如不可寫,等等等等

0

新圖片的路徑將會是錯誤的。 它將圖像存儲在根目錄中。 $ config ['new_image'] ='/文件夾名稱/ new_image.jpg';