2017-10-04 53 views
1

我正在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/'); 

     } 
    } 
+0

(比你的尺寸大),你是什么意思? – JohnDoe122

+0

问题是我上传的较小的图片没有被调整到168宽度和112高度 – JohnDoe122

+0

你有调试设置,所以你可以看看它是通过'system/libraries/Image_lib.php'找到它的方式,看看最后的结果$ width和$ height设置为? (或者在感兴趣的点上插入一堆'log_message'命令。) – ourmandave

回答

0
$config['maintain_ratio'] = TRUE; 

上面的代码指定是否调整大小时保持原有的纵横比。如果设置为true,则会改变图像分辨率。

$config['maintain_ratio'] = FALSE; //DO this 

这会保持您的分辨率不变。 我测试了这个,它工作。 下面是结果: 原始图像都为512×512和100×100(比你的尺寸小) enter image description here

+0

我在我的缩略图上做的,只是看我的代码 – JohnDoe122

+0

所以你可以详细说明你的问题更多 –

+0

正如你可以看到我的缩略图图片代码我设置此图片大小:$ configThumb ['width'] = 168; $ configThumb ['height'] = 112。好的,所以我希望所有图片都能调整到图片大小,即使图片小于这个尺寸。所以现在只有当一张图片比这个尺寸大时,它才会被调整大小,但是如果它小于那个尺寸,它就不会。你明白我的意思吗? – JohnDoe122