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_img, 0, 0, 0, 0, $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_fontsize, 0, $v_i_spazi, 85, $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");