Pe generat, prin intermediul imaginilor PHP (GDLib), de multe ori este necesar să se deducă textul. Uneori acest text trebuie aliniat în centru, din orice punct sau spre dreapta. Dimensiunea textului este, de obicei, diferită în funcție de dimensiune, deci trebuie să dați seama de dimensiunea textului în pixeli și să o scăpați din punctul de ieșire al textului.
Lista funcțiilor
Funcțiile principale de care aveți nevoie pentru alinierea textului:
imagettfbbox
array imagettfbbox (mărime float, unghi de flotare, fontfile șir, text de șir) - funcția returnează o matrice de coordonate a dreptunghiului în care este posibil să scrieți strict textul cu inscripție. mărimea dimensiunii flotorului. cu panta unghiului de flotare și font font font font.
imagettftext
array imagettftext (imagine resursă, dimensiune float, unghi de flotare, int x, int y, culoare int, font font, text șir) este o funcție pentru afișarea textului pe o imagine.
Soluție de probă
Pe un exemplu vom deduce textul referitor la o linie verticală. Stânga, centrul și respectiv dreapta.
// Înregistrați antetul imaginii PNG
header ("Tip de conținut: imagine / png");
// Creați o imagine
$ im = imagecreatetruecolor (800. 180);
// Pentru centrul (de-a lungul axei X) luăm 400
$ CENTER = 400;
// Text font
$ FONT = 'ptserif.ttf';
// Creați culori
$ alb = culoarea imaginii ($ im. 0xFF. 0xFF. 0xFF); // alb
$ gri = imaginecolorallocate ($ im. 0xDD .0xDD .0xDD); // gri
$ roșu = imagecolorallocate ($ im. 0x99 .0x33 .0x33); // roșu
$ green = imagecolorallocate ($ im. 0x33 .0x99 .0x33); // verde
$ albastru = imagecolorallocate ($ im. 0x33 .0x33 .0x99); // albastru
// Umpleți imaginea cu culoarea albă
imagefill ($ im 1. 1. $ alb);
// Desenați liniile
imaginea ($ im. $ CENTER $ CENTER 180. $ gri);
Imagine ($ im 0. 0. 60. 800. 60. $ gri);
Imagine ($ im 0. 0. 120. 800. 120. $ gri);
/ **
* Textul din stânga, totul este foarte simplu.
* /
imagettftext ($ im 11. 11. $ CENTER 20. $ roșu $ FONT. 'Text pe marginea STÂNGA');
imagettftext ($ im 11. $ 0. CENTRAL .50 $ $ roșu $ FONT. "Textul este, de asemenea, pe marginea STÂNGA");
/ **
* Text în centru.
* /
// dimensiunea textului sub coordonate
$ box = imagettfbbox (11. 0. $ FONT. "Text în CENTER");
// mărimea indentului la stânga astfel încât textul să fie în mijlocul punctului dat
$ left = $ CENTER - runda ((caseta $ [2] - $ box [0]) / 2);
imagettftext ($ im 11. 11. $ stânga 80. $ verde $ FONT. "Text în CENTER");
// text în numărul central 2
$ box = imagettfbbox (11. 0. $ FONT. "Acest text foarte important este aliniat la CENTER");
$ left = $ CENTER - runda ((caseta $ [2] - $ box [0]) / 2);
imagettftext ($ im 11. 11. $ stânga 110. $ green. $ FONT. "Acest text foarte important este aliniat la CENTER");
/ **
* Text în dreapta
* Aproape la fel de bine ca "centrat" doar diviza cu 2 nu trebuie să linia de stânga
* /
$ box = imagettfbbox (11. 0. $ FONT. 'Text pe marginea din dreapta');
$ left = $ CENTER - ($ box [2] - $ caseta [0]);
imagettftext ($ im 11. 11. $ stânga 140. $ albastru $ FONT. 'Text pe marginea din dreapta');
$ box = imagettfbbox (11. 0. $ FONT. "Acest text foarte important este aliniat la marginea DREAPTA");
$ left = $ CENTER - (caseta $ box [2] - $ $ [0]);
imagettftext ($ im 11. 11. $ stânga 170. $ albastru $ FONT. "Acest text foarte important este aliniat la marginea RIGHT");
// Afișați imaginea
imagepng ($ im);