我想在一个函数中的codeigniter中调整图像大小
我调用了Image_lib并在我的控制器上上传了库
images文件夹可以读/写。
那是我的控制者。
public function update(){
$config['upload_path']="./images/";
$config['allowed_types']='jpg|jpeg|png';
$config['encrypt_name']=TRUE;
$config['max_size']='1024';
$this->load->library('upload',$config);
if(!$this->upload->do_upload()){
$this->load->view('settings_v',array(
'userdata'=>$this->user->userdata(),
'c_data'=>$this->Settings_m->index(),
'error'=>$this->upload->display_errors(),
));
} else{
$image=$this->Settings_m->image(); // get current image to remove it
if(!empty($image)){
$path='images/'.$image;
unlink($path);
}
$config['image_library'] = 'gd2';
$config['source_image'] = '.images/'.$filename;
$config['new_image'] = '.images/'.$filename;
$config['create_thumb'] = TRUE;
$config['maintain_ratio'] = TRUE;
$config['width'] = 30;
$config['height'] = 30;
$this->load->library('image_lib', $config);
$this->image_lib->resize();
$file_data=$this->upload->data();
$filename=$file_data['file_name'];
$this->Settings_m->update($filename);
//redirect('Settings','refresh');
}
}
谢谢,
答案 0 :(得分:2)
将'.images /更改为'./images/',在图像lib配置中使用它之前,你从未定义$filename
。
$file_data = $this->upload->data();
$filename = $file_data['file_name'];
$config['image_library'] = 'gd2';
$config['source_image'] = './images/' . $filename;
$config['new_image'] = './images/' . $filename;
$config['create_thumb'] = TRUE;
$config['maintain_ratio'] = TRUE;
$config['width'] = 30;
$config['height'] = 30;
$this->load->library('image_lib', $config);
$this->image_lib->resize();
$this->Settings_m->update($filename);
//redirect('Settings','refresh');
此外,如果您只想调整源图像的大小而没有单独调整大小的图像,则应根据文档删除$config['new_image']
和$config['create_thumb']
。否则,只需使用create_thumb
或new_image
(使用与原始路径/文件名不同的路径/文件名),但不能同时使用两者。
有关此偏好的说明:
如果上面列出的两个首选项都没有(create_thumb,和 使用new_image),调整大小的方法将改为目标 原始图像进行处理。