- Home
- Categorie
- Coding e Sistemistica
- PHP
- Inserimento testo in un immagine
-
Inserimento testo in un immagine
Ciao a tutti!
Comincio nel dare gli auguri a probid, risolutore di miei molti problemi e quesiti, che finalmente è diventato moderatore ^^.Detto ciò... chiedo l'ennesimo aiuto a questa comunità.
Tempo fa seppi che il php è capace di inserire attraverso sistemi di più variabili, testi e immagini scelti dall'utente. Ho cercato dunque un po' nel web, trovando solo demo però. Ad esempio... su un file GIF è possibile, inputizzando un testo, inserirlo in una zona ben determinata, con coordinate/colore/spessore/bordo/colore-bordo/etc. tutti inputizzabili.
Vorrei sapere... quale funzione mi permette di elaborare questo ben di Dio di creazione? Cioè... inserendo in una apposita form $testo $coordinata_x $coordinata_y, quale funzione elabora ciò in una scritta?Thx a lot!
-
Ciao marbar88 e bentornato,
@MarBar88M said:Ciao a tutti!
Comincio nel dare gli auguri a probid, risolutore di miei molti problemi e quesiti, che finalmente è diventato moderatore ^^.:):)
Le librerie php alle quali ti riferisci sono le GD.
Le funzioni sono:
imagecreatortruecolor: http://it.php.net/imagecreatetruecolor che serve per creare l'immagine di base e ha due parametri,il primo è la lunghezza,il secondo l'altezza dell'immagine:[php]
$im=imagecreatetruecolor(lunghezza, altezza);[/php]imagecolorallocate: http://it.php.net/imagecolorallocate
serve per definire i colori del testo e dei caratteri:
[php]
$textcolor = imagecolorallocate($im, 255, 0, 0);[/php]$im e la variabile corrispondente alla funzione imagetruecolor;Imagestring scrive una stringa sull'immagine:
[php]imagestring($im, 5, 10, 8, "STRINGA DA SCRIVERE", $textcolor);
[/php]dove $im e la variabile corrispondente alla funzione imagetruecolor e $textcolor corrisponde alla funzione imagecolorallocate.
5 è la grandezza del font
10 è lo spazio da lasciare dal bordo sinistro
8 è lo spazio da lasciare dal bordo alto
Alla fine occorre usare
[php]header("Content-type: image/jpeg");
imagejpeg($im);[/php]per mostrare l'immagine finale.
In caso di necessità siamo qui,ciao!
-
Allora... vediamo se ho capito!
La funzione imagecreatetruecolor mi restituisce i parametri di grandezza di una immagine che voglio creare, ma allo stesso tempo, se io posseggo già un'immagine sulla quale voglio porre una stringa scrivo:
$im = imagecreatetruecolor(immagine.gif');
Ma ancora non capisco perché riutilizzo la stessa funzione per definire i parametri del testo che inserirò nell'immagine, e d'altronde la stessa variabile $im che contiene in effetti un'immagine...
Cioè... la variabile:$textcolor = imagecolorallocate($im, 255, 0, 0);
si rifà alla variabile precendente, che in realtà è l'immagine di base (sia che definisca solo dimensioni sia che definisca una vera e propria immagine).
In secondo luogo, se non chiedo troppo, non è possibile poi definire presenza/assenza di bordi e relativo colore e il tipo di font?
Eternamente grazie.
-
Con imagecreatetruecolor() non mi sembra si possano utilizzare immagini già esistenti,per quello esistono imagecreatefromjpeg(),imagecreatefromgif ecc... che si usano così:
[php] $ima = imagecreatefromjpeg("immagine1.jpg");[/php]In imagecolorallocate() viene ripresa la funzione di creazione dell'immagine appunto per indicare SU QUALE immagine si vuole scrivere.Se vuoi cambiare il font sostituisci imagestring() con imagettftext() che si usa in questo modo:
[php]
imagettftext($im, grandezza, angolo, spazio da sx, spazio dall'alto, colore del testo, font del testo, stringa);[/php]Per i bordi si usa:
imagerectangle($im,x1,y1,x2,y2,colore linea).
Il colore della linea va definito con la funzione imagecolorallocate().
esempio:
$white = imagecolorallocate($imres, 255, 255, 255);
imagerectangle($im,0,0,10,18,$white).
Ciao!
-
Perfetto!!! Funge tutto... solo una cosa e non scasso più...
Mi servirebbe definire per il testo alcune cose come:
grassetto, corsivo, sottolineato, bordo e colore bordo. E' possibile?
-
Non credo sia possibile,puoi farlo soltanto creando tu il font che vuoi utilizzare.
ciao!
-
Ti ringrazio infinitamente! Sei stato di immenso aiuto!
probid rulez!
-
Di niente,a presto!
-
Uhm... rispolvero un po' questa discussione senza aprire un nuovo topic .
Si è verificata una cosa alquanto strana, o magari per questo tipo di codice normalissima.
Il mio obiettivo era quello di creare delle custom immagini che gli utenti potevano tranquillamente salvare sul proprio PC e magari ficcarsele nella propria firma o altrove. Quando si tenta di salvarla con nome però... salva l'immagine base, quella caricata per scriverci sopra.
Magari ho pensato al fatto che l'immagine è in sospensione, cioè non ha supporto se non l'immagine base, e dunque ho pensato si dovesse salvare da qualche parte, ma...:x non ho idea che possa aiutarmi.[php]
<?php
if($r>255 or $b>255 or $g>255){
die("Hai inserito valori di colore maggiori di 255");
}$im = imagecreatefromgif(immagine.gif');
$textcolor = imagecolorallocate($im, $r, $g, $b);imagettftext($im, $dimensione_font, 0, $x, $y, $textcolor, $font, $text);
header("Content-type: image/gif");
imagegif($im);
?>
[/php]