Codeigniter图片调整大小不能正常工作
我正在CodeIgniter上创建一个网站,以便用户可以将产品添加到我的网站。我做了一个调整大小的功能,所以图片也会创建一个缩略图。 现在,如果图片大于宽度:168px和height:112px,则此缩略图仅被调整大小。如果图片比这更小,图片不会调整大小。我想要上传的所有图片都有一个宽度为168px,高度为112px的缩略图。Codeigniter图片调整大小不能正常工作
缩略图图像代码:
$dataThumb = $this->upload->data();
$configThumb['image_library'] = 'gd2';
$configThumb['source_image'] = './upload/'.$dataThumb["raw_name"].$dataThumb['file_ext'];
$configThumb['new_image'] = './upload/'.'thumb_'.$dataThumb["raw_name"].$dataThumb['file_ext'];
$configThumb['create_thumb'] = TRUE;
$configThumb['maintain_ratio'] = TRUE;
$configThumb['width'] = 168;
$configThumb['height'] = 112;
我完全上传产品代码:
public function upload() {
$this->load->library('upload');
$this->load->library('image_lib');
$config['upload_path'] = './upload/';
$config['allowed_types'] = 'gif|jpg|png|bmp|jpeg';
$config['max_size'] = '0';
$config['max_width'] = '0';
$config['max_height'] = '0';
$config['encrypt_name']= true;
$this->upload->initialize($config);
if(!$this->upload->do_upload('userfile')){
$error = array('error'=>$this->upload->display_errors());
$this->load->view('product_form', $error);
}else{
//Main image
$data = $this->upload->data();
$config['image_library'] = 'gd2';
$config['source_image'] = './upload/'.$data["raw_name"].$data['file_ext'];
$config['new_image'] = './upload/'.'new_'.$data["raw_name"].$data['file_ext'];
$config['create_thumb'] = FALSE;
$config['maintain_ratio'] = FALSE;
$config['width'] = 547;
$config['height'] = 430;
//Thumb image
$dataThumb = $this->upload->data();
$configThumb['image_library'] = 'gd2';
$configThumb['source_image'] = './upload/'.$dataThumb["raw_name"].$dataThumb['file_ext'];
$configThumb['new_image'] = './upload/'.'thumb_'.$dataThumb["raw_name"].$dataThumb['file_ext'];
$configThumb['create_thumb'] = TRUE;
$configThumb['maintain_ratio'] = TRUE;
$configThumb['width'] = 168;
$configThumb['height'] = 112;
$this->image_lib->initialize($config);
$this->image_lib->resize();
$this->image_lib->initialize($configThumb);
$this->image_lib->resize();
$this-> db-> insert('products', array(
'user_id' => $_SESSION['user_id'],
'product_foto' => 'new_'.$data["raw_name"].$data['file_ext'],
'product_foto_thumb' => 'thumb_'.$dataThumb["raw_name"].$dataThumb['file_ext'],
'product_naam' => $this->input->post('product_naam'),
'product_beschrijving' => $this->input->post('product_beschrijving'),
'ophaal_plaats' => $this->input->post('ophaal_plaats'),
'category_id' => !empty($this->input->post('category_id')) ? $this->input->post('category_id') : 0,
'date_created' => date('Y-m-d'),
'date_updated' => date('Y-m-d')
));
$data['img'] = base_url().
'/upload/new_'.$data["raw_name"].$data['file_ext'];
$dataThumb['img'] = base_url().
'/upload/thumb_'.$dataThumb["raw_name"].$dataThumb['file_ext'];
header('location:https://kadokado-ferran10.c9users.io/Product/');
}
}
$config['maintain_ratio'] = TRUE;
上面的代码指定是否调整大小时保持原有的纵横比。如果设置为true,则会改变图像分辨率。
$config['maintain_ratio'] = FALSE; //DO this
这会保持您的分辨率不变。 我测试了这个,它工作。 下面是结果: 原始图像都为512×512和100×100(比你的尺寸小)
我在我的缩略图上做的,只是看我的代码 – JohnDoe122
所以你可以详细说明你的问题更多 –
正如你可以看到我的缩略图图片代码我设置此图片大小:$ configThumb ['width'] = 168; $ configThumb ['height'] = 112。好的,所以我希望所有图片都能调整到图片大小,即使图片小于这个尺寸。所以现在只有当一张图片比这个尺寸大时,它才会被调整大小,但是如果它小于那个尺寸,它就不会。你明白我的意思吗? – JohnDoe122
(比你的尺寸大),你是什么意思? – JohnDoe122
问题是我上传的较小的图片没有被调整到168宽度和112高度 – JohnDoe122
你有调试设置,所以你可以看看它是通过'system/libraries/Image_lib.php'找到它的方式,看看最后的结果$ width和$ height设置为? (或者在感兴趣的点上插入一堆'log_message'命令。) – ourmandave