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

    Librerie Grafiche e Polaroid

    Salve,
    premesso che non sono esperto di librerie grafiche, vorrei realizzare uno script che partendo da due immagini, le unisce ed aggiunge una scritta.

    Una delle due immagini sarà sempre la stessa, ed è questa:


    La seconda immagine sarà inviata tramite FTP e lo script le unirà aggiungendo una scritta.

    Praticamente la seconda immagina dovrà essere ridimensionata per entrare nello spazio "nero", e la scritta sarà posizionata sotto nello spazio bianco.

    Ora è possibile fare tutto questo?
    In quale modo?
    Premetto che non cerco la "pappa pronta", ma giusto qualche dritta per non perdermi in "strade" inutili ...

    Grazie!

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    puoi usare facilmente le librerie GD da PHP... dai un'occhiata ai comandi:

    - imagecreatetruecolor
    - imagecopyresampled
    - imagecreatefrompng (e simili)
    - imagestring (e simili)
    e altre affini...

    con la prima puoi "creare" un'immagine ex-novo e poi "caricarci" dentro le altre con il secondo comando dopo averle opportunamente inizializzate (p.es. con il terzo comando), in pratica: prima crei due immagini (sfondo, prelevando un tuo file già sul server e primo piano, usando il file uploadato) usando imagecreatefrompng (o simili, a seconda del tipo di formato) e una terza "vuota" con imagecreatetruecolor, poi con imagecopyresampled riproduci lo sfondo e l'immagine
    dentro l'ultima "vuota". Oppure puoi direttamente usare imagecopyresampled per inserire il file uploadato "sopra" lo sfondo.
    Con l'ultimo comando puoi "inserire" le scritte.

  3. #3
    Grazie!!
    Seguo i tuoi consigli e se "sono fortunato" ti posto il codice che ho scritto, così magari mi puoi anche suggerire delle modifiche ;-)

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    eh eh... se mi becchi online ti rispondo... cmq bravo! questo è lo spirito giusto, mi pare!

  5. #5
    Prima che ti disconnetti, ti posto la prima parte del codice ... praticamente fa il resize dell'immagine caricata e le unisce ... mi manca la scrittura ...

    Codice PHP:
    class Polaroid{

      
    //url delle immagini
      
    var $v_s_urlpol;
      var 
    $v_s_urlupl;
      
    //larghezza ed altezza immagine di sfondo
      
    var $v_i_larghezza;
      var 
    $v_i_altezza;
      
    //larghezza ed altezza immagine inviata
      
    var $v_i_larghezza2;
      var 
    $v_i_altezza2;
      
    //variabili per il resize
      
    var $v_i_qualita;
      var 
    $v_i_newh;
      var 
    $v_i_newl;
      
      
    //costruttore della classe
      
    function Polaroid($v_s_imgori,$v_s_imgmod){
        
    //recupero i parametri
        
    $this->v_s_urlpol $v_s_imgori;
        
    $this->v_s_urlupl $v_s_imgmod;
        
    //ricavo altezza e larghezza dell'immagine di sfondo
        
    list($this->v_i_larghezza$this->v_i_altezza) = getimagesize($this->v_s_urlpol);
        
    //ricavo altezza e larghezza dell'immagine inviata
        
    list($this->v_i_larghezza2$this->v_i_altezza2) = getimagesize($this->v_s_urlupl);
      }
    //close function polaroid

      
    function ResizeUpload($v_i_qualita,$v_i_newaltezza,$v_i_newlarghezza){
        
    //qualita' dell'immagine
        
    $this->v_i_qualita $v_i_qualita
        
    //nuova altezza         
        
    $this->v_i_newh $v_i_newaltezza
        
    //nuova larghezza
        
    $this->v_i_newl $v_i_newlarghezza;
        
    //immagine da sovrapporre
        
    $v_s_img =  imagecreatefromjpeg($this->v_s_urlupl);
        
    //restituisce un identificatore di immagini che rappresentano una immagine nera della specificate dimensioni
        
    $tmp_img imagecreatetruecolor($this->v_i_newl$this->v_i_newh);
        
    //ridimensionamento dell'immagine
        
    imagecopyresized($tmp_img$v_s_img0000$this->v_i_newl$this->v_i_newh$this->v_i_larghezza2$this->v_i_altezza2); 
        
    //cancello l'immagine caricata
        
    imagedestroy($v_s_img);
        
    //variabile v_s_img 
        
    $v_s_img $tmp_img
        
    //nome dell'immagine temporanea
        
    $v_s_newimg "img_temp.jpg";
        
    //creazione dell'immagine temporanea 
        
    imagejpeg($v_s_img$v_s_newimg$this->v_i_qualita); 
      }
    //close function ResizeUpload

      
    function NewPolaroid(){
        
    //creo un'immagine nuova delle stesse dimensioni dello sfondo
        
    $v_s_newimg imagecreatetruecolor($this->v_i_larghezza,$this->v_i_altezza);
        
        
    $v_i_sizepol getimagesize($this->v_s_urlpol);
        
    $v_i_sizetemp getimagesize("img_temp.jpg");

        
    $v_s_img =imagecreatefromjpeg($this->v_s_urlpol);
        
    $v_s_img2 =imagecreatefromjpeg("img_temp.jpg");

        
    imagecopy($v_s_img,$v_s_img2,9,5,0,0,$v_i_sizetemp[0],$v_i_sizetemp[1]);

        
    imagejpeg($v_s_img,'definitiva.jpg',100);
        
        
    //elimino l'immagine temporanea
        
    unlink("img_temp.jpg");
      
      }
    //close function NewPolaroid

    }//close class polaroid 


    //creazione oggetto di tipo polaroid
    $objPolaroid = new Polaroid("img.jpg","prova.jpg");

    //richiamo il metodo ResizeUpload
    $objPolaroid->ResizeUpload("100","63","103");

    //richiamo il metodo NewPolaroid
    $objPolaroid->NewPolaroid(); 

  6. #6
    Eccola ... logicamente la classe è migliorabile ... però inizia a prendere forma ...
    L'unica cosa che ancora non riesco a fare, è centrare il testo in base alle lettere da cui è composto ... è possibile?

    Grazie!!

    Codice PHP:
    class Polaroid{

      
    //url delle immagini
      
    var $v_s_urlpol;
      var 
    $v_s_urlupl;
      
    //larghezza ed altezza immagine di sfondo
      
    var $v_i_larghezza;
      var 
    $v_i_altezza;
      
    //larghezza ed altezza immagine inviata
      
    var $v_i_larghezza2;
      var 
    $v_i_altezza2;
      
    //variabili per il resize
      
    var $v_i_qualita;
      var 
    $v_i_newh;
      var 
    $v_i_newl;
      
      
    //costruttore della classe
      
    function Polaroid($v_s_imgori,$v_s_imgmod){
        
    //recupero i parametri
        
    $this->v_s_urlpol $v_s_imgori;
        
    $this->v_s_urlupl $v_s_imgmod;
        
    //ricavo altezza e larghezza dell'immagine di sfondo
        
    list($this->v_i_larghezza$this->v_i_altezza) = getimagesize($this->v_s_urlpol);
        
    //ricavo altezza e larghezza dell'immagine inviata
        
    list($this->v_i_larghezza2$this->v_i_altezza2) = getimagesize($this->v_s_urlupl);
      }
    //close function polaroid

      
    function ResizeUpload($v_i_qualita,$v_i_newaltezza,$v_i_newlarghezza){
        
    //qualita' dell'immagine
        
    $this->v_i_qualita $v_i_qualita
        
    //nuova altezza         
        
    $this->v_i_newh $v_i_newaltezza
        
    //nuova larghezza
        
    $this->v_i_newl $v_i_newlarghezza;
        
    //immagine da sovrapporre
        
    $v_s_img =  imagecreatefromjpeg($this->v_s_urlupl);
        
    //restituisce un identificatore di immagini che rappresentano una immagine nera della specificate dimensioni
        
    $tmp_img imagecreatetruecolor($this->v_i_newl$this->v_i_newh);
        
    //ridimensionamento dell'immagine
        
    imagecopyresized($tmp_img$v_s_img0000$this->v_i_newl$this->v_i_newh$this->v_i_larghezza2$this->v_i_altezza2); 
        
    //cancello l'immagine caricata
        
    imagedestroy($v_s_img);
        
    //variabile v_s_img 
        
    $v_s_img $tmp_img
        
    //nome dell'immagine temporanea
        
    $v_s_newimg "img_temp.jpg";
        
    //creazione dell'immagine temporanea 
        
    imagejpeg($v_s_img$v_s_newimg$this->v_i_qualita); 
      }
    //close function ResizeUpload

      
    function NewPolaroid(){
        
    //creo un'immagine nuova delle stesse dimensioni dello sfondo
        
    $v_s_newimg imagecreatetruecolor($this->v_i_larghezza,$this->v_i_altezza);
        
    //recupero le dimensioni    
        
    $v_i_sizepol getimagesize($this->v_s_urlpol);
        
    $v_i_sizetemp getimagesize("img_temp.jpg");
        
    //le immagini da unire
        
    $v_s_img =imagecreatefromjpeg($this->v_s_urlpol);
        
    $v_s_img2 =imagecreatefromjpeg("img_temp.jpg");
        
    //unisco le immagini
        
    imagecopy($v_s_img,$v_s_img2,9,5,0,0,$v_i_sizetemp[0],$v_i_sizetemp[1]);
        
    //il testo
        
    $v_s_text 'Testing...';
        
    //carico il font
        
    $v_s_font 'bruss.ttf';
        
    //scrivo il testo    
        
    imagettftext($v_s_img1401084$v_s_colour$v_s_font$v_s_text);
        
    //creazione dell'immagine
        
    imagejpeg($v_s_img,'definitiva.jpg',100);
        
    //elimino l'immagine temporanea
        
    unlink("img_temp.jpg");
      }
    //close function NewPolaroid

    }//close class polaroid 


    //creazione oggetto di tipo polaroid
    $objPolaroid = new Polaroid("img.jpg","prova.jpg");

    //richiamo il metodo ResizeUpload
    $objPolaroid->ResizeUpload("100","63","103");

    //richiamo il metodo NewPolaroid
    $objPolaroid->NewPolaroid(); 

  7. #7
    Questa dovrebbe essere definitiva ... se qualcuno ha dei consigli

    La classe

    Codice PHP:
    class Polaroid{

      
    //url delle immagini
      
    var $v_s_urlpol;
      var 
    $v_s_urlupl;
      
    //larghezza ed altezza immagine di sfondo
      
    var $v_i_larghezza;
      var 
    $v_i_altezza;
      
    //larghezza ed altezza immagine inviata
      
    var $v_i_larghezza2;
      var 
    $v_i_altezza2;
      
    //variabili per il resize
      
    var $v_i_qualita;
      var 
    $v_i_newh;
      var 
    $v_i_newl;
      
      
    //costruttore della classe
      
    function Polaroid($v_s_imgori,$v_s_imgmod){
        
    //recupero i parametri
        
    $this->v_s_urlpol $v_s_imgori;
        
    $this->v_s_urlupl $v_s_imgmod;
        
    //ricavo altezza e larghezza dell'immagine di sfondo
        
    list($this->v_i_larghezza$this->v_i_altezza) = getimagesize($this->v_s_urlpol);
        
    //ricavo altezza e larghezza dell'immagine inviata
        
    list($this->v_i_larghezza2$this->v_i_altezza2) = getimagesize($this->v_s_urlupl);
      }
    //close function polaroid

      
    function ResizeUpload($v_i_qualita,$v_i_newaltezza,$v_i_newlarghezza){
        
    //qualita' dell'immagine
        
    $this->v_i_qualita $v_i_qualita
        
    //nuova altezza         
        
    $this->v_i_newh $v_i_newaltezza
        
    //nuova larghezza
        
    $this->v_i_newl $v_i_newlarghezza;
        
    //immagine da sovrapporre
        
    $v_s_img =  imagecreatefromjpeg($this->v_s_urlupl);
        
    //restituisce un identificatore di immagini che rappresentano una immagine nera della specificate dimensioni
        
    $tmp_img imagecreatetruecolor($this->v_i_newl$this->v_i_newh);
        
    //ridimensionamento dell'immagine
        
    imagecopyresized($tmp_img$v_s_img0000$this->v_i_newl$this->v_i_newh$this->v_i_larghezza2$this->v_i_altezza2); 
        
    //cancello l'immagine caricata
        
    imagedestroy($v_s_img);
        
    //variabile v_s_img 
        
    $v_s_img $tmp_img
        
    //nome dell'immagine temporanea
        
    $v_s_newimg "img_temp.jpg";
        
    //creazione dell'immagine temporanea 
        
    imagejpeg($v_s_img$v_s_newimg$this->v_i_qualita); 
      }
    //close function ResizeUpload

      
    function NewPolaroid($v_s_testo,$v_s_font,$v_s_nome,$v_i_size){
        
    //creo un'immagine nuova delle stesse dimensioni dello sfondo
        
    $v_s_newimg imagecreatetruecolor($this->v_i_larghezza,$this->v_i_altezza);
        
    //recupero le dimensioni    
        
    $v_i_sizepol getimagesize($this->v_s_urlpol);
        
    $v_i_sizetemp getimagesize("img_temp.jpg");
        
    //le immagini da unire
        
    $v_s_img =imagecreatefromjpeg($this->v_s_urlpol);
        
    $v_s_img2 =imagecreatefromjpeg("img_temp.jpg");
        
    //unisco le immagini
        
    imagecopy($v_s_img,$v_s_img2,9,5,0,0,$v_i_sizetemp[0],$v_i_sizetemp[1]);
        
    //il testo
        
    $v_s_text $v_s_testo;
        
    //carico il font
        
    $v_s_font $v_s_font;
        
    //grandezza font
        
    $v_i_fontsize $v_i_size;
        
    //dimensioni testo
        
    $v_s_txtbox imagettfbbox($v_i_fontsize,$angle,$v_s_font,$v_s_text);
        
    //larghezza testo
        
    $v_i_textwidth $v_s_txtbox[2]-$v_s_txtbox[0]; // lower right corner - lower left corner
        //spazzi per centrare
        
    $v_i_spazi = ($this->v_i_larghezza/2) - ($v_i_textwidth/2);
        
    //scrivo il testo
        
    imagettftext($v_s_img$v_i_fontsize0$v_i_spazi85$v_s_colour$v_s_font$v_s_text);
        
    //creazione dell'immagine
        
    imagejpeg($v_s_img,$v_s_nome,100);
        
    //elimino l'immagine temporanea
        
    unlink("img_temp.jpg");
      }
    //close function NewPolaroid

    }//close class polaroid 

    Esempio

    Codice PHP:
    //creazione oggetto di tipo polaroid
    $objPolaroid = new Polaroid("images/polaroid.jpg","upload_img/".$_FILES['image']['name']);

    //richiamo il metodo ResizeUpload
    $objPolaroid->ResizeUpload("100","63","103");

    //creo il nome della nuova immagine
    $v_s_rinomina str_replace('.jpg''_s.jpg'$_FILES['image']['name']);

    //richiamo il metodo NewPolaroid
    $objPolaroid->NewPolaroid($_POST['testo'],"bruss.ttf","polaroid/".$v_s_rinomina,"14"); 

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.