Skapa en graf med hjälp av GD-biblioteket. Rita grafer i PHP Vad vi ändrade

För att identifiera användningen av grafiska verktyg i webbscenarier, överväg följande antal möjliga grafikanvändningsfall:

  • Statiska bilder, skapade oberoende eller lånade från någonstans, kan bäddas in i en HTML-sida.
  • Programmatiskt genererade bilder (HTML + CSS) kan användas.
  • Du kan använda gd-biblioteket för att förskapa statisk grafik för alla möjliga situationer som kan uppstå under ett skripts exekvering, spara dem i filer och visa dem villkorligt.

Vi kommer inte att överväga alternativet att introducera grafik med statiska bilder på grund av dess enkelhet, så först kommer vi att överväga ett enkelt alternativ (HTML + CSS-grafik), och sedan kommer vi att överväga att använda gd-biblioteket i PHP.

Grafik HTML + CSS

Webbplatsbesökare är bekanta med horisontella stapeldiagram med färgade sidor, som särskilt ofta används för att illustrera undersökningsresultat. Vid första anblicken verkar det som om någon form av grafiska verktyg används för att skapa sådana diagram, men i verkligheten räcker det med att använda några enkla skript:

Arbeta med grafik i PHP, HTML, CSS /* CSS-stilar som bildar designen */ body div ( höjd: 1em; display: inline-block; vertical-align: middle ) span ( display: inline-block; width: 120px ) .orange ( bakgrund: orange ) .äpple ( bakgrund: #33CC66 ) .banan ( bakgrund: gul ) .tomat ( bakgrund: röd ) .gurka ( bakgrund: grön ) .potatis ( bakgrund: grå ) Beställningsformulär Frukt Apelsiner Äpplen Bananer Grönsaker Tomater Gurka Potatis

Det här exemplet visar inte några nya funktioner i PHP, utan visar helt enkelt ett enkelt sätt att skapa grafik med HTML och CSS (i det här fallet stapeldiagram):

gd bibliotek

Grafikverktygen som beskrevs i föregående avsnitt tar praktiskt taget ut kapaciteten hos standard HTML-kod (även om det är värt att notera att vi inte täckte det ganska kraftfulla HTML5 Canvas-grafikverktyget). Låt oss nu gå vidare till att beskriva metoder för att skapa verkligt godtycklig grafik med hjälp av gd-biblioteket.

Allmän beskrivning av gd-biblioteket

Generellt sett är gd-verktygslådan ett bibliotek med C-kod för att skapa och manipulera bilder. Detta bibliotek utvecklades ursprungligen och gjordes tillgängligt för allmänheten av de begåvade och generösa anställda på Boutell.com.

Själva gd-biblioteket är inte ett grafik- eller ritprogram, och det utgör inte heller ett fristående program eller ett grafiskt användargränssnitt. Istället tillhandahåller gd-biblioteket funktioner som kan anropas av vilket program som helst för att utföra önskad bildmanipulation. Detta innebär att gd-biblioteket kan länkas till vilket C-program som helst där det är nödvändigt att använda koden för detta bibliotek. Det är just detta problem som utvecklarna av PHP-systemet löste.

Faktum är att en uppsättning gränssnittsfunktioner har skrivits för detta ändamål som gör det enkelt att anropa gd-procedurer från ett PHP-skript. Men själva gd-biblioteket innehåller ingen PHP-specifik kod, och gränssnitt har utvecklats för att göra det möjligt för biblioteket att nås från flera andra programmeringsspråk och programmeringsmiljöer, inklusive Perl, Pascal, Haskell och REXX.

Gd-biblioteket låter dig anropa funktioner för att skapa källbilder (initialt tomma, som liknar ett tomt pappersark), rita och måla inom dessa källbilder på en mängd olika sätt, och slutligen konvertera bilden från gd:s interna bildformat till ett standardformat bildformat och sedan skicka den till slutdestinationen (utdata i ett webbläsarfönster eller spara i en fil eller databas). Och eftersom alla dessa operationer utförs under kontroll av programmet, och inte utförs manuellt, kan de skapade bilderna bli så komplexa som önskat och bero på alla situationer under körningen av programmet som det är önskvärt att göra dem beroende av.

Bildformat

Gd-biblioteket låter dig i princip importera och exportera bilder med en mängd olika format. De mest populära bildformaten är GIF, JPEG och PNG, även om exemplen som används främst använder det senare.

GIF- och PNG-formaten är avsedda att beskriva ett rutnät av färgade element som motsvarar pixlar, med några tillägg. Det första tillägget är att celler kan innehålla faktiska färgnummer eller index i en tabell med färgnummer. (Det första alternativet låter dig skapa mer uttrycksfulla bilder, eftersom det låter dig tillhandahålla valfritt antal olika färger, och det sista alternativet hjälper dig att skapa mer kompakta bilder.)

Det andra tillägget är som följer. Naturligtvis är den konceptuella representationen av GIF- och PNG-formaten ganska enkel, men i praktiken sker läsning, skrivning och överföring av bilder i dessa format alltid i en komprimerad form. Komprimering är nödvändig eftersom lagring av data representerad som ett rutnät av celler kräver en stor mängd minne. En enkel bild på 500x400 pixlar innehåller 200 000 pixlar, och om varje pixel kräver tre byte är mängden minne som krävs redan över en halv megabyte.

Ämnet komprimering är brett och komplext, men de flesta komprimeringsalgoritmer bygger på att reducera bildredundans för att minska dess storlek. (Till exempel kommer det att ta mindre minnesutrymme att ange att varje pixel i en bild är grön än att ange det gröna värdet för varje pixel individuellt.) Tyvärr förlitar sig inte komprimeringsalgoritmer på att använda dessa egenskaper eftersom de måste bestämma sådana komplexa problem att metoderna för att lösa dessa problem, implementerade i komprimeringsalgoritmen som används för att generera bilder i GIF-format, till och med har patenterats.

Installation av biblioteket

Uppriktigt sagt är uppgiften att installera gd-biblioteket och få det att fungera framgångsrikt i kombination med ett PHP-system ganska komplex. Detta beror inte på några brister i PHP- eller gd-programvaran, utan beror helt på konfigurationsproblem; i synnerhet måste du förstå var gd-biblioteken bör vara och faktiskt finns, och se till att kompilerings- och länkstegen för alla körbara filer är korrekt utförda. Därför är den bästa möjliga situationen att användaren upptäcker att gd-biblioteket redan är installerat och gd-support redan är aktiverat i PHP-systemet (antingen med tillstånd av webbhotellet eller för att det ingår i installerat PHP-system).

Därför måste installationen av gd-biblioteket börja från steg noll - genom att kontrollera om detta bibliotek redan har installerats. Ange först följande kod i din skriptfil och se resultatet av att köra den i din webbläsare, oavsett om dina skript körs av ditt webbhotell eller körs helt av din egen installation:

Efter att ha visat den här sidan på skärmen, sök helt enkelt efter textsträngen "gd" i webbläsarfönstret. Detta bör avslöja ett underavsnitt som beskriver i vilken utsträckning din PHP-installation tillåter stöd för gd-biblioteket. Om du bara tänker förbereda vissa typer av bilder (till exempel PNG), och resultaten av phpinfo()-funktionen indikerar att stöd för den typen av bilder är aktiverat, kan du komma igång direkt. Och om gd-versionsinformationen innehåller ordet "bundled", så används gd-biblioteket som följer med PHP.

Om ett försök att hitta ett omnämnande av gd-biblioteket slutar i misslyckande, och du installerar PHP själv, kan du installera och konfigurera gd-bibliotekets konfiguration. (Å andra sidan, om din PHP-installation hanteras av ditt webbhotell, är dina enda alternativ att be det företaget att tillhandahålla support för gd-biblioteket, eller använda ett annat webbhotell.)

Att använda gd-biblioteket som följer med PHP eliminerar många av de krångel som är förknippade med att installera gd, men inte alla. Faktum är att genom att använda själva versionen som ingår i distributionspaketet kan du få gd-biblioteket, men inte nödvändigtvis alla bibliotek som krävs för att gd ska fungera. Själva gd-biblioteket beror på flera andra bibliotek: libpng (för att manipulera PNG-bilder), zlib (för komprimering) och jpeg-6b eller senare (för att manipulera JPEG-bilder om det behövs). Dessa bibliotek finns redan i många Linux-installationer, i vilket fall det kan vara tillräckligt att inkludera det nödvändiga med-alternativet (som --with-zlib) i alternativen utan att ange installationskatalogen. Om du gör PHP-konfigurationen själv kan du helt enkelt lägga till alternativet --with-gd för att säkerställa att den inkluderade versionen av gd ingår i den körbara filen. Och om du vill peka på en annan version, använd alternativet --with-gd=path istället.

Om du upptäcker att ett eller flera obligatoriska bibliotek saknas, betyder det att dessa bibliotek måste byggas separat. För information om var du hittar aktuella versioner kan du börja med att läsa dokumentationen som finns på www.libgd.org.

Grundläggande principer för att arbeta med gd-biblioteket

När en bild skapas eller manipuleras med hjälp av gd-verktygslådan, representeras bilden i ett speciellt gd-format som inte motsvarar någon konventionell bildtyp. Det är teoretiskt möjligt att exportera bilder i detta gd-format, men en sådan operation används sällan eftersom den resulterande bilden inte är komprimerad och inte kan visas i en webbläsare eller ett enkelt grafikprogram.

En bild som bearbetas med hjälp av gd-verktygssatsen kännetecknas av information om bredd, höjd och färg på alla pixlar, vars antal är lika med produkten av bredd och höjd. Vanligtvis börjar ett program sin interaktion med gd-biblioteket genom att antingen skapa en ny tom bild (på vilken man ritar och ritar) eller genom att importera en bild från en fil. Följande steg utförs vanligtvis: för det första, fördelningen av färger i bilden, för det andra, rita och måla eller manipulera bilden med några andra operationer, för det tredje, konvertera bilden till ett allmänt accepterat format (till exempel PNG eller JPEG) och överföra den till sin destination.

Representation av färger

Det finns två sätt att representera färger i gd-bilder: en palettbaserad representation, som är begränsad till 256 färger, och en sann färgrepresentation, som låter dig specificera ett godtyckligt antal olika RBG-färgnummer. I gd 1.x var det enda alternativet att använda palettbaserade färger, men i gd 2.x och versionen av detta bibliotek som ingår i PHP är det möjligt att skapa både palettbaserade bilder och bilder i realistiska färger. En sak att tänka på är att varje given gd-bild måste vara antingen palettbaserad eller ha verklighetstrogna färger (RGB); det betyder att det inte finns något alternativ att introducera realistiska färger i bilder baserade på en palett.

För att få den ursprungliga tomma bilden baserad på paletten måste du anropa funktionen ImageCreate() och för att få bilden i sanna färger, använd funktionen ImageCreateTrueColor().

Palettbaserade bilder

Färger anges i formatet röd-grön-blå (RGB), med tre siffror från 0 till 255. Till exempel är färgen som anges av siffrorna (255, 0, 0) ljusröd, färgen ( 0, 255, 0) - grön, färg (0, 0, 255) - blå, färg (0, 0, 0) - svart, färg (255, 255, 255) - vit och färg (127, 127, 127) - grå. Genom att skapa fler och fler nya färger kan du välja värdena för de tre färgkomponenterna godtyckligt.

Varje ritning på en bild måste göras med en specifik färg, och färgerna måste fördelas i bilden innan de används. Dessutom blir den första färgen som distribueras i bilden automatiskt bakgrundsfärgen. Så, i inget fall bör du anta att du kan göra utan att ange färger, och vanligtvis är operationen att distribuera färger den första operationen efter att ha skapat en ny tom bild.

Färger i palettbaserade bilder skapas med hjälp av funktionen imagecolorallocate() som tar en bild (som skapats tidigare) och tre heltal som anger andelen rött, grönt och blått som parametrar. Returvärdet är ett heltal som anger indexet för den nya färgen i bildens interna palett. Detta returvärde måste tilldelas en variabel eftersom det angivna indexvärdet behövs för att utföra alla framtida operationer med denna färg.

Palettbaserade bilder kan ha ett maximalt antal färger på 256. (Läsaren kanske är intresserad av vad sådana bilder faktiskt är baserade på, men varje pixel i en palettbaserad bild är faktiskt en enda byte som lagrar indexet av ett element i paletten med 256 färger.)

Observera att indexet som returneras när en av färgerna i en bild distribueras endast är meningsfullt för den bilden. Till exempel, om ett PHP-skript tilldelar $black till en färg som är distribuerad i en bild, är det ingen mening att använda den variabeln som färginmatning till ett ritkommando som anropas för att bearbeta en annan bild.

Bilder med realistiska färger

gd 2.0 och senare ger också möjligheten att skapa icke-palettbaserade bilder där varje pixel lagrar ett godtyckligt RGB-färgnummer. I detta så kallade true-color-format är antalet möjliga färger extremt stort. Den här funktionen utökar inte bara omfattningen av konstnärliga uttryck utan gränser, den låter dig också troget återge PNG- och JPEG-bilder med verklighetstrogna färger som laddas in i minnet med hjälp av gd-verktygslådan.

Förutom att en annan funktion används för att skapa den ursprungliga bilden och det inte finns några begränsningar för att välja olika färger, liknar principerna för att arbeta med bilder i sanna färger de för palettbaserade bilder.

I synnerhet kan du fortfarande anropa ImageColorAllocate() för att skapa nya färger och tilldela en variabel returvärdet för senare användning i ritkommandon. Den enda skillnaden är att returvärdet är RGB-färgnumret, inte indexet för elementet i paletten. Dessutom, i bilder med verklighetstrogna färger, finns det inget koncept för en bakgrundsfärg skapad som en bieffekt av funktionen ImageColorAllocate(); Som ett resultat av initialiseringen tilldelas alla pixlar beteckningen svart (0, 0, 0).

Genomskinlighet

Versioner av gd 2.x stöder konceptet transparens. Detta använder en alfakanal (utöver de röda, gröna och blå värdena) för att indikera hur transparent färgen är. Detta tillåter till exempel en form att läggas ovanpå en annan så att den första formen förblir delvis synlig snarare än att helt överlappa den andra.

I PHP har många funktioner för att arbeta med bilder en analog som innehåller ordet "alfa" i namnet, vilket indikerar att färgen i dessa funktioner representeras av fyra värden (R, G, B, A). Till exempel tar funktionen imageColorAllocate() tre parametrar, och när du anropar funktionen ImageColorAllocateAlpha() måste du ange en fjärde parameter med ett värde mellan 0 och 127. Ett värde på noll indikerar att färgen är helt ogenomskinlig, och ett värde av 127 indikerar att färgen är helt ogenomskinlig

Koordinater och ritkommandon

Efter att ha skapat en bild med hjälp av gd-verktygssatsen skapas implicit ett koordinatsystem som låter dig specificera ritkommandon i det. De begränsande koordinatvärdena i detta system bestäms av de angivna parametrarna för bildens bredd och höjd.

Ursprunget för koordinaterna i detta system, motsvarande koordinaterna (0, 0), finns i bildens övre vänstra hörn. Den positiva riktningen för X-värden är från vänster till höger, och för Y-värden är den uppifrån och ned. (I datorgrafiska koordinatsystem är denna placering av ursprunget vanligt, men de som har studerat analytisk geometri verkar vara vana vid att ursprunget finns i det nedre vänstra hörnet av diagrammet.)

Antalet ritkommandon är mycket stort. Dessa kommandon inkluderar, men är inte begränsade till, kommandon för att rita linjesegment, rektanglar och bågar, såväl som kommandon för att ställa in specifika pixelvärden. Men kom ihåg att slutresultatet av alla dessa ritnings- och plottningskommandon är att ställa in pixelvärden. Efter att ha utfört kommandon som ändrar pixelvärden finns det inga spår kvar i minnet (förutom de ändrade värdena själva), så det finns inget sätt att åsidosätta ritnings- och plottningskommandon eller att presentera resultaten av olika kommandon separat.

Det finns inget som hindrar ritkommandon som sträcker sig utanför den angivna bilden, men sådan ritning har ingen synlig effekt. Till exempel kommer en rektangel inte att synas i bilden om alla koordinatvärden är negativa.

Formatkonvertering

Alla ritnings- och bildmanipuleringsoperationer utförs på bilden som representeras i det interna gd-formatet. Och efter att dessa operationer är slutförda kan skriptet anropa ett av konverterings- och utdatakommandona (imagepng, imagetjpeg, etc.) för att konvertera denna bild till det önskade grafiska formatet och mata ut den till användarens webbläsarfönster (eller till en fil).

Frigör resurser

När resultatet av konverteringen av den färdiga gd-bilden har överförts till användaren kan vi anse att arbetet med den interna versionen är slutfört. Det betyder att denna version måste förstöras. Det korrekta sättet att göra detta är att anropa imagedestroy() med en bild som parameter.

gd biblioteksfunktioner

Vi kommer inte att separat lista och beskriva i den här artikeln alla funktioner som tillhandahålls i PHP-tolkens gd-gränssnitt. För att bekanta dig med denna information rekommenderar vi att du använder avsnittet "Bildbehandling och generering" i php.net-manualen. De flesta gd-funktioner faller inom en av kategorierna som visas i tabellen nedan. Observera att funktionsnamnen som listas i den här tabellen är versaler för att göra den första bokstaven i varje ord lättare att läsa, men detta villkor observeras inte alltid i kodexemplen eftersom PHP-funktionsnamn inte är skiftlägeskänsliga:

Klassificering av gd-funktioner Typ Exempel Obs
Bildskapande funktioner ImageCreate(), ImageCreateTruecolor(), ImageCreateFromGd(), ImageCreateFromJpeg() Returnera en ny gd-bild. Funktionen ImageCreate() tar bildens bredd och höjd som parametrar, och parametrarna för andra funktioner är en filsökväg, URL eller en sträng som innehåller en tidigare skapad bild som ska laddas och konverteras till gd-format
Funktioner som utför färgdistributionsoperationer ImageColorAllocate(), ImageColorAllocateAlpha(), ImageColorDeallocate() Funktionen ImageColorAllocate() tar ett bildhandtag och de nödvändiga värdena av rött, grönt och blått som parametrar, och returnerar sedan ett färgnummer för senare användning i ritnings- och plottningsoperationer. Funktionen ImageColorAllocateAlpha accepterar ytterligare en parameter - transparenskoefficient (0-127)
Funktioner som utför färgmatchningsoperationer ImageColorClosest(), ImageColorClosestAlpha(), ImageColorExact(), ImageColorExactAlpha() Returnera indexet för den matchande färgen i palettbilden. Funktioner som innehåller ordet "Närmast" i deras namn returnerar den färg som matchar bäst (matchningsnoggrannheten mäts som avståndet mellan punkter i RGB-värdeutrymmet); funktioner med beteckningen "Exakt" returnerar färgnumret endast om det är identiskt med det sökta, annars returnerar de värdet -1, funktioner med namnet "Alpha" fungerar på färger, som bestäms med hjälp av fyra värden (med transparenta färger)
Linjeritningsfunktioner ImageLine(), ImageDashedLine(), ImageRectangle(), ImagePolygon(), ImageEllipse(), ImageArc() De används för att rita raka segment eller kurvor av den angivna formen. Vanligtvis är den första parametern för var och en av dessa funktioner bilden, den sista parametern är färgen och de mellanliggande parametrarna är X- och Y-koordinaterna.
Inställningar för linjeritningspenna ImageSetStyle(), ImageSetThickness() Ändra inställningar som påverkar egenskaperna hos de linjer som produceras av efterföljande linjeritningskommandon (vissa av dessa funktioner är endast tillämpliga på gd 2.0.1 eller senare versioner)
Ritnings- och fyllningsfunktioner ImageFilledRectangle(), ImageFilledEllipse(), ImageFilledPolygon(), ImageFilledArc(), ImageFill() Som regel liknar de motsvarande funktioner för att rita linjer, men de ger inte bara för att rita konturerna av områden, utan också för att fylla de skapade områdena med färg. Specialfunktionen ImageFill() utför en fyllningsoperation med en angiven fyllningsfärg. Fyllning görs i alla riktningar med början från de angivna XY-koordinaterna (vissa av dessa funktioner kräver gd 2.0.1 eller senare)
Funktioner för att arbeta med text ImageString(), ImageLoadFont() ImageString-funktionen tar som parametrar ett bildhandtag, teckensnittsnummer, X- och Y-koordinater, en textsträng och en färg. Om teckensnittsnumret är mellan 1 och 5, används ett av de fem inbyggda typsnitten för att visa linjen i denna färg. Å andra sidan indikerar ett teckensnitt som är större än 5 resultatet av att ladda ett specialiserat teckensnitt med hjälp av funktionen ImageLoadFont()
Exportfunktioner ImagePng(), ImageJpeg() Konvertera den interna gd-bilden till en bild i lämpligt format och skicka sedan den här bilden till utdataströmmen. Om endast en parameter anges (bildhandtaget), så ekas bilden till användaren, och om ytterligare en parameter används, som är en filsökväg, blir destinationen för utdataströmmen filen
Bildförstöringsfunktion ImageDestroy() Tar ett bildhandtag som en parameter och släpper alla resurser som är associerade med bilden
Stöd för HTTP-bilder

För att en bild ska kunna presenteras korrekt i användarens webbläsare är det nödvändigt att ange var bilden ska komma ifrån och vilket format den har. Därför är det tyvärr inte möjligt att helt enkelt implementera till exempel ett anrop till funktionen imageToPng() i den genererade HTML-filen och därmed lösa problemet med att visa bilden. I huvudsak måste du alternera bildutgångskoden med HTML-koden som genereras i PHP-skriptet, och för detta kan du använda ett av de tre alternativen som beskrivs nedan.

Skapa helsidesbilder

Hela den genererade sidan kan formateras som en bild. I det här fallet måste du skicka en HTTP-rubrik före bilddatan, och därmed förklara att det som följer är en bild av en viss typ. Till exempel kan följande rader finnas i slutet av skriptet:

// ... kod som skapar en bild och tilldelar den // till variabeln $image header("Content-type: image/png"); // Visa titeln i webbläsaren imagepng($image); // Skicka data från själva bilden, konverterad till PNG-format imagedestroy($image); // Släpp resurser

Fördelen med detta tillvägagångssätt är att all information, inklusive POST-parametrar, kan användas för att förmedla instruktioner om sammansättningen av den framtida bilden. Nackdelen är att den resulterande sidan inte kan innehålla någon vanlig HTML-kod. Faktum är att du till och med måste vara noga med att inte skicka någon textutdata före titeln och bilden i dina skript, eftersom det är liktydigt med att skicka innehållet i förtid. I det här fallet visas felmeddelandet "Rubriker har redan skickats...".

Bädda in bilder lagrade i filer

Först av allt, notera att HTML stöder deskriptorn , som låter dig bädda in en bild genom att ange bildfilens sökväg eller URL, som i följande exempel:

Den här designen gäller statiska bildfiler, men det finns ingen anledning till att den inte skulle kunna bädda in en nyskapad bild. Därför kan du förbereda ett skript där en bild först skapas, sedan skrivs bilddata till en lokal fil och sedan genereras HTML-koden med motsvarande deskriptor , pekar på den nyskapade filen.

De enda nackdelarna med detta tillvägagångssätt är att för det första måste processen för att skapa sidor inkludera filskrivning, vilket kan vara tidskrävande, och för det andra måste du bestämma vad du ska göra med filerna när du är klar med att använda dem.

Men i en viss situation är detta tillvägagångssätt idealiskt. Det handlar om att skapa och cachelagra bilder som representerar en begränsad uppsättning val. I det här fallet finns det ett specifikt sätt att associera en viss situation med namnet på bildfilen. När några av dessa situationer uppstår som kräver att en bild matas ut, kontrolleras den för att se om en motsvarande fil redan finns. Om svaret är positivt används en länk till denna fil helt enkelt, formaterad som en deskriptor , och om svaret är nej, skapas en bild, skrivs till en fil, och sedan tillämpas en länk till denna bild igen. I slutändan kommer det helt enkelt inte att vara nödvändigt att skapa nya filer.

Bädda in bilder genererade i skript

Slutligen finns det ingen anledning till varför du inte skulle kunna tillhandahålla ett fristående bildskript och sedan bädda in den resulterande bilden på en dynamisk sida som genereras av ett annat skript genom att ange i deskriptorn URL till detta skript. Den enda svårigheten är att välja hur man överför nödvändiga data till den beroende sidan. Till exempel kan ett handtag som indikerar en inbäddad bild se ut så här:

I det här fallet returnerar ballpage.php-skriptet PNG-bilder av färgade bollar på olika positioner i bilden.

Men att använda det här tillvägagångssättet kan orsaka problem eftersom webbservrar och webbläsare ibland kontrollerar suffixen för de filer som bearbetas och, när de får resultatet av kontrollen, reagerar på dem annorlunda. Till exempel kan ballpage-återgivningsskriptet behöva ges en .php-tillägg så att Apache-servern kan avgöra att serverkoden ska tolkas som PHP-kod (även om det erforderliga bearbetningsläget också kan specificeras genom konfigurationsfiler).

Det finns dock även icke-standardiserade versioner av webbläsare som inte tar hänsyn till möjligheten att en fil med filtillägget .php producerar en bild, trots att rubriken passerat indikerar att en bild följer efter. När du använder den här metoden måste du därför testa skripten i olika webbläsare och se till att den avsedda användarkretsen kommer att ta emot sidorna i den form du tänkt dig.

Nedan finns exempel på hur du använder gd-biblioteket för att skapa bilder.

Ett exempel på att använda gd-biblioteket: skapa enkla former

I följande exempel kommer vi att visa hur man använder gd-biblioteket för att skapa en ritning som innehåller enkla geometriska former:

Ersätt inställningarna med dina egna och spara den här filen under namnet connect-to-database.php i mappen fcdemo.

Låt oss infoga slumpmässiga data

Om detta vore ett riktigt projekt skulle användartabellen växa med tiden, men för demonstrationens skull måste vi infoga lite data. Låt oss skriva ett litet skript som kommer att infoga slumpmässiga data i tabellen. Oroa dig inte om du inte förstår följande kod - den är inte viktig för den här handledningen.

Spara den här filen som heter generera-random-data.php i samma mapp.

Först inkluderar vi databasanslutningsfilen. Sedan sätter vi en tidsram från vilken tidpunkten för användarregistrering kommer att väljas slumpmässigt. Du kan ändra antalet rader som ska infogas. För att göra detta måste du justera variabeln $RecordsToInsert.

Sedan kör vi skriptet för att infoga de genererade posterna i databasen. För att starta denna process, gå till den här adressen - http://localhost/fcdemo/generate-random-data.php.

Så småningom bör du se meddelandet: "Infogade ($RecordsToInsert) poster"

Steg 2. Förbered webbplatsens skelett

Vi måste skapa en mycket enkel sida för att visa vårt diagram. Något som det här:

FusionCharts v3.2 - LinkedCharts PHP Demo