Render Text și forme pe imagini în PHP

În articolul precedent, ne-am concentrat pe încărcarea și manipularea imaginilor cu PHP. Am învățat să rotiți, să redimensionați, să scalați sau să răsturnați o imagine. De asemenea, am aflat despre filtre diferite și matricea de convoluție. Aceste tutoriale au acoperit, de asemenea, câteva utilizări practice ale bibliotecii GD, precum redimensionarea tuturor imaginilor într-un director sau adăugarea de filigrane pe mai multe imagini simultan.

Pe lângă utilizarea GD pentru manipularea imaginilor obișnuite, putem crea și noi propriile noastre de la zero. Diferitele funcții din bibliotecă pot fi folosite pentru a desena forme de bază cum ar fi elipse, cercuri, dreptunghiuri, poligoane și linii simple. Cu unele matematici, aceste forme pot crea modele frumoase. Există, de asemenea, funcții disponibile pentru a desena text pe imaginea randată, care deschide o mulțime de posibilități.

Acest tutorial vă va învăța cum să desenați forme de bază în PHP și cum să faceți text folosind fontul dvs. preferat.

Desenează forme de bază în PHP cu GD

Vom învăța despre formele de bază din această secțiune și apoi vom acoperi grosimea liniei, periile și stilurile de linie mai târziu.

Desenați linii

Puteți desena o linie dreaptă simplă între două puncte date folosind imaginea ($ imagine, $ x1, $ y1, $ x2, $ y2, $ culoare) funcţie. $ image parametru este o resursă de imagine care va fi fost creată mai devreme folosind funcții precum imagecreatetruecolor () sau imagecreatefromjpeg (). Vom folosi imagecreatetruecolor () în acest tutorial pentru a crea imagini noi de la zero. Funcția va desena o linie orizontală dacă $ y1 este egal cu $ y2. În mod similar, va atrage o linie verticală dacă $ x1 este egal cu $ x2.

Desenați cercuri și arce

Functia imagearc ($ image, $ cx, $ cy, $ lățime, $ înălțime, $ start, $ end, $ color) pot desena arce circular folosind $ cx și $ cy ca centru. $ lățime și $ înălțime parametrii determină dimensiunea arcului pe diferite axe. $ de start și $ end parametrii specifică unghiul de pornire și de sfârșit al arcului în grade. Dacă doriți să desenați arce complet de la 0 la 360 grade, puteți utiliza alternativa imageellipse ($ imagine, $ cx, $ cy, $ lățime, $ înălțime, culoare $) funcţie.

Desenați dreptunghiuri și poligoane

Puteți desena dreptunghiuri peste o imagine folosind imagerectangle ($ imagine, $ x1, $ y1, $ x2, $ y2, $ culoare) funcţie. $ x1 și $ y1 Valorile determină colțul din stânga sus al dreptunghiului. $ x2 și $ y2 valorile determină colțul din dreapta jos. Există, de asemenea, un imagepolygon ($ imagine, $ puncte, $ num_points, $ color) funcție, care poate crea un poligon cu orice număr de laturi sau puncte. puncte $ parametrul este o matrice în care două elemente sunt asociate împreună pentru a obține coordonatele unui anumit punct. 

O altă funcție a fost apelată imageopenpolygon () a fost adăugat la PHP 7, care nu trasează o linie între primul și ultimul punct.

Împreună pentru a crea o desen

În exemplul următor, am folosit toate aceste funcții pentru a crea un desen linie cu o colibă, soare și pământ.

Lucrul important aici este doar să ne dăm seama de valoarea coordonatelor diferite. Am vrut să atrag totul în raport cu dimensiunea imaginii originale, așa că am folosit-o $ img_height și $ img_width variabile pentru a calcula coordonatele diferitelor puncte.

Controlul grosimii liniei, stilului și culorilor

Imaginea de mai sus are câteva probleme cum ar fi linii foarte subțiri și nici o colorare. Toate aceste probleme pot fi rezolvate cu ușurință folosind funcții precum imagesetthickness () și imagefilledrectangle ().

Grosimea liniei

imagesetthickness ($ imagine, grosime $) funcția stabilește grosimea liniilor randate atunci când desenați dreptunghiuri, poligoane, arce etc. De exemplu, setarea $ grosime la 5 va face orice figură trasată folosind imagerectangle (), imagearc (), imagepolygon (), etc 5 pixeli grosime.

Desenează forme pline

Fiecare funcție de desen are, de asemenea, o variantă de culoare plină, care umple această figură particulară cu o anumită culoare. De exemplu, imagefilledrectangle () va umple dreptunghiul desenat cu culoarea dată.

Utilizarea periilor

O funcție GD foarte utilă este imagesetbrush ($ imagine, $ perie). $ perie parametru în această funcție este doar o altă resursă de imagine care poate fi utilizată pentru a desena linii. De exemplu, puteți utiliza un desen vectorial transparent al unei flori ca perie pentru a adăuga modele frumoase de flori la imaginea dvs. Fragmentul de cod de mai jos a fost scris pentru a utiliza imaginea unui nor ca perie la desenarea unui punct. Acest lucru adaugă un nor unic pe cer.

Am găsit această imagine cloud pe Pixabay și am redus-o la o dimensiune adecvată pentru proiectul nostru.

Codul complet al imaginii colibei este prezentat mai jos. Am adăugat pur și simplu două versiuni ale fiecărei figuri, una pentru a desena conturul și cealaltă pentru a umple culoarea.

Acesta este rezultatul final al codului PHP GD de mai sus.

Redactarea textului pe imagini

PHP GD vine cu patru funcții diferite pentru a vă permite să redați mai multe caractere sau un singur caracter într-o direcție orizontală sau verticală. Aceste funcții sunt imagechar (), imagecharup (), imagestring (), și imagestringup (). Toți aceștia acceptă aceiași șase parametri, așa că vom discuta doar imagechar () funcționează aici.

$ font parametru imagechar ($ imagine, $ font, $ x, $ y, $ șir, $ culoare) funcția este pur și simplu mărimea textului redat. Acceptă valori întregi de la 1 la 5 $ string parametru este textul pe care doriți să-l afișați. Dacă treceți un șir cu mai multe caractere la funcțiile de caractere, numai primul caracter va fi redat pe imagine. imagecharup () și imagestringup () funcțiile vor face textul vertical de jos în sus.

Când vine vorba de redactarea textului, cele patru funcții discutate mai sus sunt foarte limitate. Veți găsi că și cea mai mare valoare a dimensiunii fontului este prea mică pentru utilizarea normală. De asemenea, textul poate fi scris numai orizontal și vertical.

Din fericire, GD are, de asemenea, imagettftext ($ imagine, $ dimensiune, $ unghi, $ x, $ y, $ culoare, $ fontfile, $ text) care poate face textul în orice font doriți. $ fișierul de font parametrul este utilizat pentru a specifica calea către fontul TrueType pe care doriți să îl utilizați pentru a afișa textul. $ x și $ y parametrii determină poziția inițială a textului redat.

Următorul exemplu folosește toate aceste funcții pentru a crea unele efecte de text frumos.

După cum puteți vedea, am redat același text cu același font în poziții ușor diferite pentru a crea anumite efecte, cum ar fi umbră de text de bază. Lucrul important de reținut este faptul că textul redat de orice funcție de text va ascunde complet textul de sub el în caz de suprapunere. Aici este imaginea finală obținută după executarea codului de mai sus.

Gândurile finale

Scopul acestui tutorial a fost să vă familiarizați cu diferite funcții GD pentru a desena forme de bază de la zero în PHP. Cu ajutorul unor matematici, veți putea folosi aceste funcții pentru a crea forme mai complexe, cum ar fi poligoane obișnuite, dreptunghiuri rotunjite etc..

PHP GD are de asemenea câteva funcții foarte utile pentru redarea textului pe o imagine. Utilizarea unui font frumos va asigura că textul redat nu pare ciudat când este plasat pe imagini obișnuite încărcate din diferite căi de fișiere.

Ați creat mai multe efecte de text fanteziste în PHP? Vă rugăm să le împărtășiți cu noi în comentarii.

Cod