leonardo.it

GD, php e immagini generate al volo

 
motherboard
14 ottobre 2008
Commenta

gdlogobig GD, php e immagini generate al volo

Spesso, molto spesso, webmaster alle prese con la creazione di un nuovo sito scelgono font molto particolari non sapendo che solo sul loro computer e pochi altri si vedranno correttamente i caratteri. Dopo alcune settimana arriverà l’atroce momento: il webmaster alle prime armi sta facendo vedere il sito su di un’altro pc ad un amico, o peggio ancora, a qualche estraneo e, fiero del lavoro fatto, non guarda neanche lo schermo.

Dopo qualche secondo però, l’interlocutore lo richiama dicendo che la grafica è un po’ bruttina, che le righe si sovrappongono, che il Times New Roman non è che ci sta molto bene e chissà quali altri problemi. Il nostro amico webmaster, che non ci crede, finalmente guarda il computer e…. si è tutto vero. Il nostro amico si strapperebbe i capelli dalla rabbia, e rosso in volto se ne va.

Ora per evitare questi brutti momenti ci sono due soluzioni:

1) Utilizzare i font predefiniti di default già in Windows (Times New Roman, Arial, Verdana e pochi altri)

2) Generare le immagini contenenti il testo con il font particolare con le librerie GD

Ovviamente consigliamo la prima soluzione, il caricamento sarà più veloce; ma se proprio non potete fare a meno di quei font particolari e originali, non vi resta che la seconda soluzione.

Ecco un esempio di codice PHP

<?
$img = imagecreate (180, 35);
$sfondo = imagecolorallocate($img,0,0,0);
$stringa = imagecolorallocate($img,255,255,255);
imagettftext($img,15,3,14,27,$stringa,"quicivannoifont\arial.ttf","Font: Arial");
header("Content-type: image/png");
imagepng($img);
?>

Per utilizzare questo codice, dovrete avere le librerie GD (spessissimo installate di default su moltissimi server) e avere nella cartella quicivannoifont il font arial.

Con la chiamata imagecreate(180, 35) si crea la “base” per l’immagine, il rettangolo vuoto di dimensioni 180 (larghezza) per 35 (altezza) pixel. Su di esso si potrà disegnare utilizzando le funzioni fornite da PHP di interfaccia verso la libreria GD. Per definire un colore si utilizza la funzione imagecolorallocate, dando come parametro il codice RGB relativo. Qui trovate molti esempi di codici RGB. Vediamo invece le funzioni imagettftext() simile a imagestring() ma più ricca di opzioni, anch’essa infatti scrive una stringa all’interno di un’immagine ma permette inoltre di stabilirne grandezza del carattere (15), inclinazione (3), distanza dx/sx (14) e distanza up/down (27)

Infine andrà indicato l’header, jpg, gif o png a seconda della necessità e per ultimo la funzione finale imagejpeg, imagegif o imagepng a seconda della dichiarazione precedente.

Un’altra funzionalità delle librerie GD è che si possono anche modificare le immagini, omettendo la parte relativa alla creazione e dichiarando nella variabile $img il percorso dell’immagine da modificare.

Categorie: Php
Articoli Correlati
Guadagna online : SprinTrade

Guadagna online : SprinTrade

Sprintrade e’ un Network di affiliazione che si vuole porre come un punto di riferimento nel settore del Marketing di affiliazione italiano. Il network di affiliazione della Sprintrade sfrutta un [...]

Font e Immagini Creative Con VEER

Font e Immagini Creative Con VEER

Molti blogger amano acquistare immagini di repertorio ricche di creatività. Se anche tu fai parte di questi, sicuramente gradirai conoscere questo nuovo progetto. Veer è il nuovo sito web dedicato agli amanti della fotografia. [...]

Font professionali spessi

Font professionali spessi

A chi non è capitato mai di aver bisogno di un font “cicciuto” da utilizzare e non riuscire a trovare quello giusto dall’elenco di Photoshop o da quello in dotazione [...]

Font gratis per tutti

Font gratis per tutti

L’articolo parla di un sito web molto utile. Un sito che contiene circa 8000 font pronti per l’uso, che possaimo prelevare e utilizzare secondo le nostre esigenze. I font sono [...]

Lista Commenti
Aggiungi il tuo commento

Fai Login oppure Iscriviti: è gratis e bastano pochi secondi.

Nome*
E-mail**
Sito Web
* richiesto
** richiesta, ma non sarà pubblicata
Commento