4
我在嘗試調整圖像大小然後創建拇指時遇到了問題。CodeIgniter:圖像處理類不能工作兩次
這兩個函數都是獨立工作的,但是當試圖對它們進行調用時,只有第一個調用起作用。沒有拇指被創建,爲什麼?
這裏是我的控制器:
if($this->upload->do_upload()){
// Si oui, tout va bien
//Update DB
$pictureData = $this->upload->data();
if($pictureData['file_name']!=''){
//On resize l'immage
//On charge la librarie
$this->load->library('thumbs');
$this->thumbs->resize($pictureData['full_path'], 300, 600);
$News['image']=$pictureData['file_name'];
//On crée un Thumbnail:
// on envoi le full path
if($this->thumbs->create($pictureData['full_path']))
// on stock le path recu
$News['thumb'] = $pictureData['raw_name'].'_thumb'.$pictureData['file_ext'];
}
}
這裏是我已經爲這兩個函數創建庫:
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Thumbs
{
function __construct()
{
$CI =& get_instance();
$this->load->library('image_lib');
}
public function create($picPath) {
$CI =& get_instance();
$config['image_library'] = 'gd2';
$config['source_image'] = $picPath;
$config['maintain_ratio'] = TRUE;
$config['create_thumb'] = TRUE;
$config['width'] = 100;
$config['height'] = 100;
$CI->image_lib->clear();
$CI->image_lib->initialize($config);
if(!$CI->image_lib->resize()){
$CI->session->set_flashdata('flashError', $CI->image_lib->display_errors());
return False;
}
$CI->image_lib->clear();
Return True;
}
public function resize($picPath, $x, $y) {
$CI =& get_instance();
$config1['image_library'] = 'gd2';
$config1['source_image'] = $picPath;
$config1['maintain_ratio'] = TRUE;
if($x!=0)
$config1['width'] = $x;
if($y!=0)
$config1['height'] = $y;
$CI->image_lib->clear();
$CI->image_lib->initialize($config1);
if(!$CI->image_lib->resize()){
$CI->session->set_flashdata('flashError', $CI->image_lib->display_errors());
return False;
}
$CI->image_lib->clear();
Return True;
}
}
所以,如果我叫只有一個,它做工精細,羯羊它是創建或調整大小功能。否則,如果我嘗試調用它們,只有第一個被調用的函數有效。
編輯:感謝fccotech,我做到了。這裏是他想出瞭解決方案:
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Thumbs
{
function __construct()
{
$this->CI =& get_instance();
$this->CI->load->library('image_lib');
}
public function create($picPath, $picName) {
$config =array();
$config['image_library'] = 'gd2';
$config['source_image'] = $picPath;
$config['maintain_ratio'] = TRUE;
$config['create_thumb'] = TRUE;
$config['width'] = 100;
$config['height'] = 100;
$config['new_image'] = $picName;
// $CI->image_lib->clear();
$this->CI->image_lib->initialize($config);
if(!$this->CI->image_lib->resize()){
$this->CI->session->set_flashdata('flashError', $this->CI->image_lib->display_errors());
return False;
}
$this->CI->image_lib->clear();
Return True;
}
public function resize($picPath, $x, $y) {
$config1 = Array();
$config1['image_library'] = 'gd2';
$config1['source_image'] = $picPath;
$config1['maintain_ratio'] = TRUE;
if($x!=0)
$config1['width'] = $x;
if($y!=0)
$config1['height'] = $y;
// $CI->image_lib->clear();
$this->CI->image_lib->initialize($config1);
if(!$this->CI->image_lib->resize()){
$this->CI->session->set_flashdata('flashError', $this->CI->image_lib->display_errors());
$this->CI->image_lib->clear();
return False;
}
$this->CI->image_lib->clear();
Return True;
}
}
謝謝,但是在做完你所說的內容之後它仍然不起作用 –
你現在可以發佈你的代碼嗎? – fccotech
完成後,我現在更新了 –