2017-10-04 1 views
1

Je crée un site Web sur CodeIgniter afin que les utilisateurs puissent ajouter des produits à mon site Web. J'ai fait une fonction de redimensionnement afin que l'image crée également une vignette. Maintenant, cette vignette est redimensionnée uniquement si l'image est plus grande que la largeur: 168 px et hauteur: 112px. Si l'image est plus petite que cela, l'image ne sera pas redimensionnée. Je souhaite que toutes les images que je télécharge aient une image en miniature de 168 pixels de largeur et de 112 pixels de hauteur.Redimensionnement de l'image de codeigniter ne fonctionne pas complètement

Code d'image

miniature:

$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; 

Mon téléchargement complet Code produit:

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

Que voulez-vous dire? – JohnDoe122

+0

Le problème est que les plus petites images que je télécharge ne sont pas redimensionnées à 168 largeur et 112 hauteur – JohnDoe122

+0

Avez-vous mis en place le débogage afin que vous puissiez le regarder se frayer un chemin à travers system/libraries/Image_lib.php et voir ce que final $ width et $ height sont définis sur? (Ou insérez un tas de commandes 'log_message' sur les points d'intérêt.) – ourmandave

Répondre

0
$config['maintain_ratio'] = TRUE; 

Le code ci-dessus Indique si pour maintenir le ratio d'aspect original lors du redimensionnement. Si elle est définie sur true, votre résolution d'image sera modifiée.

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

Ceci permettra de corriger votre résolution. J'ai testé cela et cela a fonctionné. On trouvera ci-résultat: Image originale était à la fois 512 X 512 (plus grand que votre dimension) et 100 x 100 (Plus petit que votre dimension) enter image description here

+0

Je l'ai fait à ma vignette, il suffit de regarder mon code – JohnDoe122

+0

Alors, quel est exactement votre problème pouvez-vous élaborer plus –

+0

Comme vous pouvez le voir à mon code image miniature, j'ai défini cette taille d'image: $ configThumb ['width'] = 168; $ configThumb ['height'] = 112. Ok, donc je veux que toutes les images soient redimensionnées à cette taille d'image même si une image est plus petite que cette taille. Donc maintenant, seulement quand une image est plus grande que cette taille, elle est redimensionnée, mais si elle est plus petite que cette taille, elle ne le sera pas. Est-ce que tu comprends ce que je veux dire? – JohnDoe122