Rendera text och former på bilder i PHP

I den föregående artikeln fokuserade vi på laddade och manipulera bilder med PHP. Vi lärde oss hur man roterar, ändra storlek, skala eller vända en bild. Vi lärde oss också om olika filter och konvolutionsmatrisen. Dessa tutorials täckte också några praktiska användningar av GD-biblioteket som att ändra storlek på alla bilder i en katalog eller lägga till vattenstämplar på flera bilder samtidigt.

Förutom att använda GD för att manipulera vanliga bilder kan vi också skapa vår egen från början. Olika funktioner i biblioteket kan användas för att rita grundläggande former som ellipser, cirklar, rektanglar, polygoner och enkla linjer. Med vissa matriser kan dessa former skapa fina mönster. Det finns också funktioner tillgängliga för att rita text på den gjorda bilden, vilket öppnar många möjligheter.

Denna handledning kommer att lära dig hur man ritar grundläggande former i PHP och hur man gör text med din favoritfontong.

Rita grundläggande former i PHP med GD

Vi lär oss om grundläggande former i det här avsnittet och täcker sedan linjetyckor, borstar och linjestilar senare.

Rita linjer

Du kan rita en enkel rak linje mellan två givna punkter med hjälp av imageline ($ image, $ x1, $ y1, $ x2, $ y2, $ color) fungera. De $ image parameter är en bildresurs som tidigare har skapats med funktioner som imagecreatetruecolor () eller imagecreatefromjpeg (). Vi kommer att använda imagecreatetruecolor () genom hela denna handledning för att skapa nya bilder från början. Funktionen kommer att rita en horisontell linje om $ Y1 är lika med $ y2. På samma sätt kommer det att dra en vertikal linje om $ x1 är lika med $ x2.

Rita cirklar och bågar

Funktionen imagearc ($ bild, $ cx, $ cy, $ bredd, $ höjd, $ start, $ slut, $ färg) kan rita cirkelbågar med $ cx och $ cy som centrum. De $ bredd och $ höjd Parametrar bestämmer storleken på bågen på olika axlar. De $ start och $ end parametrar anger start- och ändvinkeln på bågen i grader. Om du vill rita kompletta bågar från 0 till 360 grader kan du använda alternativet imageellipse ($ bild, $ cx, $ cy, $ bredd, $ höjd, $ färg) fungera.

Rita rektanglar och polygoner

Du kan rita rektanglar över en bild med hjälp av imagerectangle ($ bild, $ x1, $ y1, $ x2, $ y2, $ färg) fungera. De $ x1 och $ Y1 värdena bestämmer det övre vänstra hörnet av rektangeln. De $ x2 och $ y2 värdena bestämmer det nedre högra hörnet. Det finns också en bildpolygon ($ bild, $ poäng, $ num_points, $ color) funktion, som kan skapa en polygon med ett antal sidor eller punkter. De $ punkter Parameter är en grupp där två element är parade ihop för att få koordinaterna för en viss punkt. 

En annan funktion kallas imageopenpolygon () har lagts till PHP 7, vilket inte ritar en linje mellan första och sista punkten.

Att lägga det tillsammans för att skapa en ritning

I det följande exemplet har vi använt alla dessa funktioner för att skapa en streckritning med en stuga, sol och mark.

Det viktiga här är bara att ta reda på värdet av olika koordinater. Jag ville rita allt i förhållande till storleken på originalbilden, så jag använde $ img_height och $ img_width variabler för att beräkna koordinaterna för olika punkter.

Styrning av tyngd, stil och färgfyllningar

Ovanstående bild har ett par problem som mycket tunna linjer och ingen färgning. Alla dessa problem kan lösas enkelt med funktioner som imagesetthickness () och imagefilledrectangle ().

Linjetycka

De imagesetthickness ($ bild, $ tjocklek) funktionen sätter tjockleken på renderade linjer vid ritning av rektanglar, polygoner, bågar etc. Till exempel inställning $ tjocklek till 5 kommer att göra någon figur ritad med imagerectangle (), imagearc (), imagepolygon (), etc. 5 pixlar tjock.

Ritning fyllda former

Varje teckningsfunktion har också en fylld färgversion som fyller den specifika figuren med en viss färg. Till exempel, imagefilledrectangle () kommer att fylla den rita rektangeln med den givna färgen.

Använda borstar

En mycket användbar GD-funktion är imagesetbrush ($ image, $ brush). De $ borste parameter i denna funktion är bara en annan bildresurs som kan användas för att rita linjer. Till exempel kan du använda en genomskinlig vektorritning av en blomma som pensel för att lägga till fina blommönster till din bild. Kodstycket nedan ges för att använda bilden av ett moln som borste när man ritar en punkt. Detta lägger till ett moln i vår himmel.

Jag hittade denna molnbild på Pixabay och skalade ner den till en lämplig storlek för vårt projekt.

Den fullständiga koden för hutbilden ges nedan. Vi har helt enkelt lagt till två versioner av varje figur, en för att rita konturen och den andra för att fylla i färgen.

Detta är det slutliga resultatet av PHP GD-koden ovan.

Rendering av text på bilder

PHP GD levereras med fyra olika funktioner för att låta dig göra flera tecken eller bara ett tecken i horisontell eller vertikal riktning. Dessa funktioner är imagechar (), imagecharup (), imagestring (), och imagestringup (). Alla accepterar samma sex parametrar, så vi kommer bara att diskutera imagechar () funktion här.

De $ font parameter imagechar ($ image, $ font, $ x, $ y, $ string, $ color) funktionen är helt enkelt storleken på den gjorda texten. Den accepterar bara heltalsvärden från 1 till 5. The $ string parameter är texten som du vill göra. Om du överför en sträng med flera tecken till karaktärsfunktionerna, kommer endast det första tecknet att visas på bilden. De imagecharup () och imagestringup () Funktionerna kommer att göra texten vertikalt från botten till toppen.

När det gäller att göra text är de fyra funktioner som vi diskuterade ovan mycket begränsade. Du kommer att upptäcka att även det största teckensnittstalet är för litet för normal användning. Texten kan också skrivas horisontellt och vertikalt.

Lyckligtvis har GD också en imagettftext ($ image, $ size, $ vinkel, $ x, $ y, $ color, $ fontfile, $ text) funktion som kan göra texten i valfri typsnitt du vill ha. De $ typsnittsfilen parameter används för att ange sökvägen till det TrueType-teckensnitt du vill använda för att visa texten. De $ x och $ y parametrar bestämmer startpositionen för den gjorda texten.

Följande exempel använder alla dessa funktioner för att skapa några fina texteffekter.

Som du kan se har vi gjort samma text med samma teckensnitt i något olika positioner för att skapa några effekter som grundläggande textskugga. Det viktiga att komma ihåg är att texten som gjorts av någon textfunktion helt döljer texten under den om överlappning uppstår. Här är den slutliga bilden som erhållits efter att ha kört ovanstående kod.

Slutgiltiga tankar

Syftet med denna handledning var att göra dig bekant med olika GD-funktioner för att rita grundläggande former från början i PHP. Med hjälp av lite matte kan du använda dessa funktioner för att skapa mer komplicerade former som vanliga polygoner, avrundade rektanglar etc.

PHP GD har också ett par mycket användbara funktioner för att göra text på en bild. Användningen av en fin typsnitt kommer att se till att den gjorda texten inte ser konstigt ut när den läggs på vanliga bilder som laddas från olika filvägar.

Skapade du några mer snygga texteffekter i PHP? Vänligen dela dem med oss ​​i kommentarerna.