2013-06-04 8 views
8

Ho eseguito il caricamento dell'immagine, ridimensionato più volte in CI. Lo stesso codice funziona in una pagina ma non funziona in un'altra pagina. quando visualizzo l'errore, dice "Il tuo server non supporta la funzione GD richiesta per elaborare questo tipo di immagine". Il codice per caricare l'immagine è ... \Il server non supporta la funzione GD richiesta per elaborare questo tipo di immagine.

function do_upload() { 

     $original_path = './uploads/activity_images/original'; 
     $resized_path = './uploads/activity_images/resized'; 
     $thumbs_path = './uploads/activity_images/thumb'; 
     $this->load->library('image_lib'); 

     $config = array(
      'allowed_types' => 'jpg|jpeg|gif|png', //only accept these file types 
      'max_size' => 2048, //2MB max 
      'upload_path' => $original_path //upload directory  
     ); 
     $this->load->library('upload', $config); 
     $this->upload->do_upload(); 
     $image_data = $this->upload->data(); //upload the image 
     $image1 = $image_data['file_name']; 

     //your desired config for the resize() function 
     $config = array(
      'source_image' => $image_data['full_path'], //path to the uploaded image 
      'new_image' => $resized_path, 
      'maintain_ratio' => true, 
      'width' => 128, 
      'height' => 128 
     ); 
     $this->image_lib->initialize($config); 
     $this->image_lib->resize(); 

     // for the Thumbnail image 
     $config = array(
      'source_image' => $image_data['full_path'], 
      'new_image' => $thumbs_path, 
      'maintain_ratio' => true, 
      'width' => 36, 
      'height' => 36 
     ); 
     //here is the second thumbnail, notice the call for the initialize() function again 
     $this->image_lib->initialize($config); 

     $this->image_lib->resize(); 
     //$this->image_lib->clear(); 
     echo $this->image_lib->display_errors(); 
     var_dump(gd_info()); 
     die(); 
     return $image1; 
    } 

Cosa sta succedendo non riesco a capire .. ??

+0

Cosa fa 'var_dump (gd_info());' ti dà? –

+0

array 'GD Version' => stringa 'in bundle (compatibile con 2.0.34)' (lunghezza = 27) 'Supporto FreeType' => booleano true 'FreeType Linkage' => stringa 'con freetype' (lunghezza = 13) 'T1lib Support' => booleano falso 'GIF Leggi Support' => boolean true 'GIF Create Support' => boolean true 'JPEG Supporto' => boolean true 'PNG Support' => boolean true 'WBMP Support '=> boolean true ' XPM Support '=> boolean false ' XBM Support '=> booleano true ' Supporto font giapponese con mappatura JIS '=> boolean false – Drudge

+0

Inoltre hai '$ config [' image_library '] = 'gd2'; '? –

risposta

4

cambiare la vostra prime righe da:

$original_path = './uploads/activity_images/original'; 
$resized_path = './uploads/activity_images/resized'; 
$thumbs_path = './uploads/activity_images/thumb'; 
$this->load->library('image_lib'); 

a:

$config['image_library'] = 'gd2'; 
$original_path = './uploads/activity_images/original'; 
$resized_path = './uploads/activity_images/resized'; 
$thumbs_path = './uploads/activity_images/thumb'; 
$this->load->library('image_lib', $config); 
+1

Ho appena cambiato il campo di input in funziona ... – Drudge

+0

Hm. Ok, è fantastico che l'hai risolto. –

+3

Mi sono appena scoperto che l'elemento CI genera questo errore se non si fornisce un percorso completo a un file di immagine valido. Se manca il nome del file, ad esempio, getimagesize() restituisce false e questo porta all'errore. Non molto chiaro ... – stef

11

Durante il mio progetto ho dovuto affrontare problemi simili. Questo link mi aiuta a risolverlo.

Sostituire

$this->load->library('image_lib', $config); 

con

$this->load->library('image_lib'); 
// Set your config up 
$this->image_lib->initialize($config); 
// Do your manipulation 
$this->image_lib->clear(); 
+0

+1 solo questa soluzione ha funzionato per me. –

+0

funziona anche per me utilizzando CI 3 –

-1

Se non funziona (il mio caso), l'errore potrebbe in realtà essere l'intera questione.

  1. Verificare che sia stato installato GD, su linux si farebbe

    sudo yum elenco installato | grep php

  2. Se non è installato, installarlo

    sudo yum install php--nome-pacchetto gd

  3. riavviare l'apache

    servizio sudo httpd restart

Problemi correlati