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");