Inserire testo dinamico su immagine centrato e a capo

Alberto.b

Nuovo Utente
4 Mag 2015
2
0
0
Ciao a tutti,
sto creando un piccolo generatore di meme for fun, solo per fare due risate con gli amici. Ho quindi bisogno di prendere del testo da un input e scriverlo su un'immagine base.

Il problema mi si presenta al momento di posizionare il testo sull'immagine, siccome il testo è inserito dagli utenti non posso sapere a priori da quanti caratteri è composto. Mi piacerebbe però, prima di tutto, riuscire a centrare il testo. Sarebbe anche carino riuscire, all'evenienza, far andare a capo parte del testo. Tutto questo senza sapere a priori la lunghezza della stringa.

Queste sono le operazioni che eseguo per scrivere il testo sull'immagine:

PHP:
    $text = $_GET['text'];        
   
    $baseimg = imagecreatefromjpeg("img/basememe.jpg");  
   
//Nome(path) del file di Output. Sarà progressivo.    
$sFileNameOutput = "memes/20150504-1.jpg";     

// Scrivo il testo e la posizione. Con queste impostazioni il testo viene scritto iniziando dal corner top-left.    
imagettftext($baseimg, 23, 0, 0, 23, imagecolorallocate($baseimg, 255, 255, 255), "Verdana.ttf", strtoupper($text));     

// Set del colore di trasparenza    
imagecolortransparent($baseimg, 0);    
 
// Scrivo il File   
 imagejpeg($baseimg,$sFileNameOutput);  
   
// Libero la memoria    
imagedestroy($baseimg);

Lo spazio utile all'interno dell'immagine in cui scrivere il testo è di 506x350px.

Spero ci sia un modo di ottenere il risultato che vorrei, io non riesco a trovarlo :confused:

Grazie per l'aiuto!
 
Ciao, per andare a capo, puoi gestire con diversi campi input assegnando ad ogni input un maxlength, quindi esempio metti tre input corrispondenti a tre righe, calcoli in base alla dimensione del font quanti caratteri entrano in una riga e stabilisci il maxlength per il campo input.
Per centrare il testo prova così:
PHP:
$textcol = imagecolorallocate($ima,107,105,108);
imagettftext($baseimg,24,0,$Width-$x,$Height-$y,$textcol,$font,$frase);
per gestire la posizione della scritta $x e $y in pixel e $Width/$Height sono la dimensione dell'immagine basememe.jpg
 

Discussioni simili