Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Creazione thumbnails tramite classi

    Ciao, sto cercando di capire come poter creare delle thumbnails dalle loro img "grandi" tramite questo script in classi che mi hanno passato...
    purtroppo io è la prima volta che uso le classi, per cui sono un bel pesce fuor d'acqua... però qualcosa sono riuscito a capire....
    solo che continuo ad avere questo errore

    Fatal error: Call to undefined function: imagecreatefromstring() in c:\program files\easyphp1-8\www\image.php on line 32

    qua sotto vi metto la pgina di prova che sto facendo...


    Codice PHP:
    <?php
    /*
    ridimensiona una immagine per creare una full (=immagine grande) ridimesionata oppure una thumbnail
    @param $b_full booleano true / false per settare se creare una full ridimensionata o una thumb
    @return true 
    */
    class new_image{
        var 
    $w_orig;
        var 
    $h_orig;
        var 
    $w_resized;
        var 
    $h_resized;
        var 
    $orig_string;
        
    /*function new_image(){
        }*/
        
    function new_image($w_orig$h_orig$w_resized$h_resized$orig_string){
            
    $this->w_orig $w_orig;
            
    $this->h_orig $h_orig;
            
    $this->w_resizes $w_resized;
            
    $this->h_resized $h_resized;
            
    $this->orig_string $orig_string;
        }
        
      function 
    resize($b_full false){//$w_orig, $h_orig
        //calcola le dimensioni dell'immagine finale in base al fatto che sia una full ridimensionata o una thumb
                
    list($w_orig$h_orig$w_resized$h_resized) = $this->get_resized($b_full);//$w_orig, $h_orig
        //list($w, $h, $w_resized, $h_resized) = $this->get_resized($b_full);
        //echo $w_orig;
        
        //creo l'immagine su cui lavorare a partire dal codice binario dell'immagine uploadata che ho salvato in precedenza in $this->orig_string
                //$img_orig = "./nuovo_logo.jpg";
                //$this->orig_string = "./nuovo_logo.jpg";
        
    $img_orig imagecreatefromstring($this->orig_string);
                
        
    //$img_orig = imagecreatefromstring(ob_get_contents("./nuovo_logo.jpg"));
        
        //se l'immagine ha gi… la dimensione giusta non ho bisogno di ridimensionare
        
    if($w_orig == $w_resized){
          
    $img_for_string $img_orig;
        
    //altrimenti ridimensiona...
        
    }else{
          
    //creo una immagine vuota con le misure ridimensionate
          
    $img_resized imagecreatetruecolor($w_resized,$h_resized);
          
    //copio l'immagine originale ridimensionata nella nuova immagine
          
    imagecopyresampled($img_resized$img_orig1001008080$w_resized$h_resized$w_orig$h_orig);
          
    $img_for_string $img_resized;
        }
        
        
    //utilizzo le funzioni ob_ per 'catturare' il binario dell'immagine e saslvarlo
        
    ob_start();
        
    //a seconda del tipo dell'immagine utilizzo la funzione appropriata per 'buttare fuori' il binario in modo che ob_ possa catturarlo
        
    switch($this->type){
          case 
    "image/jpeg":
            
    imagejpeg($img_for_string,'',95);
          break;
          case 
    "image/pjpeg":
            
    imagejpeg($img_for_string,'',100);
          break;
          
    //la gif ha problemi di copyright quindi ormai Š poco supportata
          
    case "image/gif":
            if (
    function_exists("imagegif")){
              
    imagegif($img_for_string);
            }else{
              echo 
    $this->o_util->js_alert("attenzione: la versione corrente di PHP non supporta il formato gif");
              return 
    false;
            }
          break;
          case 
    "image/png":
            
    imagepng($img_for_string);
          break;
        }
        
    /*salvo il contenuto del buffer ob_ nella variabile appropriata (full o thumb)
        da questa stringa puoi salvare l'immagine in un campo blob del db o salvarla come file
        */
        
    //   ********************************************
        
    if($b_full$this->full_string ob_get_contents();
        else 
    $this->thumb_string ob_get_contents();
        
    //pulisco il buffer
        
    ob_end_clean();
        
    //distruggo le immagini
      //  imagedestroy($img_orig);
        
    if($img_resizedimagedestroy($img_resized);
        return 
    true;
      }
      
    /*
    calcola le dimensioni che deve avere una immagine, sia essa un full ridimensionata in base alle impostazioni del sito
      o una thumbnail
    @param $b_full booleano true / false per settare se creare una full ridimensionata o una thumb
    @return a_resized array con le dimensioni dell'immagine
      array(
            0 => larghezza originale,
            1 => altezza originale,
            2 => larghezza ridimensionata,
            3 => altezza ridimensionata,
            )

    */
      
    function get_resized($b_full true){
        
    /*questi sono parametri impostati nella classe: 
            $this->w_full_max,$this->h_full_max dimensioni massime di una full (che quindi potr… essere ridimensionata)
            $this->w_thumb_max,$this->h_thumb_max dimensioni massime di una thumb
        */ 
        
    if($b_full){
            
    $w_max $this->w_full_max;
            
    $h_max $this->h_full_max;
        }else{
            
    $w_max $this->w_thumb_max;
            
    $h_max $this->h_thumb_max;
        }
        
    $a_resized = array();

        
    //piglio le dimensioni dell'immagine uploadata (che ho precedentemente memorizzato in $this->tmp_name)
        
    list($w_orig$h_orig) = getimagesize($this->tmp_name);
        
    $a_resized[0] = $w_orig;
        
    $a_resized[1] = $h_orig;
        
    //un po' di calcoli per stabilire se l'immagine sia rettangolare in verticale o in orizzonatale
        
    if($w_orig $h_orig){
          if(
    $w_orig>$w_max){
            
    $a_resized[2] = $w_max;
            
    $a_resized[3] = $h_orig $w_max $w_orig;
          }else{
            
    $a_resized[2] = $w_orig;
            
    $a_resized[3] = $h_orig;
          }
        }else{
          if(
    $h_orig>$h_max){
            
    $a_resized[3] = $h_max;
            
    $a_resized[2] = $w_orig $h_max $h_orig;
          }else{
            
    $a_resized[2] = $w_orig;
            
    $a_resized[3] = $h_orig;
          }
        }

        return 
    $a_resized;
      }
    }
    ?> 
    <html>
    <body>

    <?php
        $o_new_image 
    = new new_image($w_orig$h_orig"80""80""./nuovo_logo.jpg");
        
    $o_new_image->resize();

        
    $img "./nuovo_logo.jpg";
        
    $a_img getimagesize ($img);
        
    $w_orig $a_img[0];
        
    $h_orig $a_img[1];
        
        echo 
    $w_orig."
    "
    .$h_orig."
    "
    ;
        echo 
    "<img src=\"".$img."\">";
    ?>


    </body>
    </html>
    Qualcuno riesce a spiegarmi cosa c'è che non va???
    ripeto che, purtroppo, sono un novello delle classi, per cui può anche essere (anzi sicuro) che sbaglio qualcosa...

    Grazie!

  2. #2
    beh come dice l'errore non c'è alcuna traccia della function imagecreatefromstring() ...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.