Vytvoření grafu pomocí knihovny GD. Kreslení grafů v PHP Co jsme změnili

Chcete-li identifikovat použití grafických nástrojů ve webových scénářích, zvažte následující rozsah možných případů použití grafiky:

  • Statické obrázky, vytvořené nezávisle nebo odněkud vypůjčené, lze vložit do stránky HTML.
  • Lze použít programově generované obrázky (HTML + CSS).
  • Knihovnu gd můžete použít k předběžnému vytvoření statické grafiky pro všechny možné situace, které mohou nastat během provádění skriptu, uložit ji do souborů a podmíněně zobrazit.

O možnosti zavedení grafiky pomocí statických obrázků vzhledem k její jednoduchosti nebudeme uvažovat, proto nejprve zvážíme jednoduchou možnost (HTML + CSS grafika) a poté zvážíme použití knihovny gd v PHP.

Grafika HTML + CSS

Návštěvníci webu znají vodorovné sloupcové grafy s barevnými stranami, které se zvláště často používají k ilustraci výsledků průzkumu. Na první pohled se zdá, že se k vytváření takových diagramů používají nějaké grafické nástroje, ale ve skutečnosti stačí použít několik jednoduchých skriptů:

Práce s grafikou v PHP, HTML, CSS /* CSS styly, které tvoří design */ body div ( výška: 1 em; display: inline-block; vertical-align: middle ) span ( display: inline-block; width: 120px ) .oranžová ( pozadí: oranžová ) .jablko ( pozadí: #33CC66 ) .banán ( pozadí: žluté ) .rajče ( pozadí: červené ) .okurka ( pozadí: zelené ) .brambory ( pozadí: šedé ) Objednávkový formulář Ovoce Pomeranče Jablka Banány Zelenina Rajčata Okurky Brambory

Tento příklad neukazuje žádné nové funkce PHP, ale pouze ukazuje jednoduchý způsob, jak vytvořit grafiku pomocí HTML a CSS (v tomto případě sloupcové grafy):

gd knihovna

Grafické nástroje popsané v předchozí části prakticky vyčerpávají možnosti standardního HTML kódu (i když stojí za zmínku, že jsme nepokryli poměrně výkonný nástroj pro tvorbu grafiky HTML5 Canvas). Nyní přejdeme k popisu metod vytváření skutečně libovolné grafiky pomocí knihovny gd.

Obecný popis knihovny gd

Obecně řečeno, sada nástrojů gd je knihovna kódu C pro vytváření a manipulaci s obrázky. Tato knihovna byla původně vyvinuta a zpřístupněna veřejnosti talentovanými a štědrými zaměstnanci Boutell.com.

Knihovna gd sama o sobě není grafickým nebo kreslicím programem, ani nepředstavuje samostatnou aplikaci nebo grafické uživatelské rozhraní. Namísto toho knihovna gd poskytuje funkce, které může volat jakýkoli program, aby provedl požadovanou manipulaci s obrázky. To znamená, že knihovnu gd lze propojit s jakýmkoli programem v jazyce C, ve kterém je nutné použít kód této knihovny. Právě tento problém řešili vývojáři systému PHP.

Ve skutečnosti byla pro tento účel napsána sada funkcí rozhraní, které usnadňují volání gd procedur z PHP skriptu. Samotná knihovna gd však neobsahuje žádný kód specifický pro PHP a byla vyvinuta rozhraní, která umožňují přístup ke knihovně z několika dalších programovacích jazyků a programovacích prostředí, včetně Perl, Pascal, Haskell a REXX.

Knihovna gd vám umožňuje volat funkce pro vytváření zdrojových obrázků (zpočátku prázdných, připomínajících prázdný list papíru), kreslit a malovat v těchto zdrojových obrázcích různými způsoby a nakonec převést obrázek z interního formátu obrázku gd na standardní obrazový formát a poté jej odešlete na konečné místo určení (výstup v okně prohlížeče nebo uložení do souboru či databáze). A protože všechny tyto operace jsou prováděny pod kontrolou programu a nejsou prováděny ručně, mohou se vytvořené obrazy stát tak složitými, jak je požadováno, a záviset na jakýchkoli situacích během provádění programu, na kterých je žádoucí je učinit závislými.

Formáty obrázků

Knihovna gd v podstatě umožňuje importovat a exportovat obrázky pomocí široké škály formátů. Nejoblíbenější obrazové formáty jsou GIF, JPEG a PNG, i když použité příklady používají především druhý jmenovaný.

Formáty GIF a PNG jsou určeny k popisu mřížky barevných prvků odpovídajících pixelům s některými doplňky. Prvním doplňkem je, že buňky mohou obsahovat skutečná čísla barev nebo indexy do tabulky čísel barev. (První možnost umožňuje vytvářet výraznější obrázky, protože umožňuje poskytnout libovolný počet různých barev, a poslední možnost vám pomáhá vytvářet kompaktnější obrázky.)

Druhý přídavek je následující. Koncepční znázornění formátů GIF a PNG je samozřejmě poměrně jednoduché, ale v praxi se čtení, zápis a přenos obrázků v těchto formátech vždy provádí v komprimované podobě. Komprese je nezbytná, protože ukládání dat reprezentovaných jako mřížka buněk vyžaduje velké množství paměti. Jednoduchý obrázek 500x400 pixelů obsahuje 200 000 pixelů, a pokud každý pixel vyžaduje tři bajty, velikost požadované paměti je již přes půl megabajtu.

Téma komprese je široké a složité, ale většina kompresních algoritmů je založena na snížení redundance obrazu za účelem zmenšení jeho velikosti. (Například k určení, že každý pixel v obrázku je zelený, zabere méně místa v paměti, než k zadání zelené hodnoty pro každý pixel jednotlivě.) Bohužel kompresní algoritmy nespoléhají na použití těchto vlastností, protože se musí rozhodnout složité problémy, že metody řešení těchto problémů, implementované v kompresním algoritmu používaném pro generování obrázků ve formátu GIF, byly dokonce patentovány.

Instalace knihovny

Upřímně řečeno, úloha instalace knihovny gd a její úspěšné fungování ve spojení se systémem PHP je poměrně složitá. To není způsobeno žádnými nedostatky v PHP nebo gd softwaru, ale je to zcela způsobeno problémy s konfigurací; zejména musíte porozumět tomu, kde by knihovny gd měly být a ve skutečnosti jsou, a zajistit, aby byly správně dokončeny kroky kompilace a propojení všech spustitelných souborů. Nejlepší možnou situací tedy je, že uživatel zjistí, že knihovna gd je již nainstalována a podpora gd je již v systému PHP povolena (buď díky webhostingové společnosti nebo proto, že je součástí nainstalovaného systému PHP).

Instalace knihovny gd proto musí začít od kroku nula – kontrolou, zda tato knihovna již byla nainstalována. Nejprve zadejte následující kód do souboru skriptu a zobrazte výsledky jeho spuštění ve vašem prohlížeči, ať už vaše skripty spouští vaše webhostingová společnost, nebo jsou spouštěny výhradně vaší vlastní instalací:

Po zobrazení této stránky na obrazovce jednoduše vyhledejte v okně prohlížeče textový řetězec „gd“. To by mělo odhalit podsekci popisující rozsah, v jakém vaše instalace PHP umožňuje podporu knihovny gd. Pokud máte v úmyslu připravit pouze určité typy obrázků (například PNG) a výsledky funkce phpinfo() naznačují, že podpora pro tento typ obrázků je povolena, můžete začít hned. A pokud informace o verzi gd obsahují slovo „svázaný“, pak se použije knihovna gd, která je součástí PHP.

Pokud pokus o nalezení zmínky o knihovně gd skončí neúspěchem a vy sami instalujete PHP, můžete nainstalovat a nakonfigurovat konfiguraci knihovny gd. (Na druhou stranu, pokud vaši instalaci PHP zajišťuje vaše hostingová společnost, jedinou možností je požádat tuto společnost, aby poskytla podporu pro knihovnu gd, nebo použít jinou webhostingovou společnost.)

Použití knihovny gd, která je součástí PHP, eliminuje mnoho potíží spojených s instalací gd, ale ne všechny. Faktem je, že použití samotné verze obsažené v distribuční sadě vám umožní získat knihovnu gd, ale ne nutně všechny knihovny potřebné pro fungování gd. Samotná knihovna gd závisí na několika dalších knihovnách: libpng (pro manipulaci s obrázky PNG), zlib (pro kompresi) a jpeg-6b nebo novější (pro manipulaci s obrázky JPEG v případě potřeby). Tyto knihovny jsou již přítomny v mnoha instalacích Linuxu, v takovém případě může stačit zahrnout požadované s volbou (jako například --with-zlib) do voleb bez uvedení instalačního adresáře. Pokud si konfiguraci PHP provádíte sami, můžete jednoduše přidat volbu --with-gd, abyste zajistili, že zahrnutá verze gd bude součástí spustitelného souboru. A pokud chcete ukázat na jinou verzi, použijte místo toho volbu --with-gd=path.

Pokud zjistíte, že chybí jedna nebo více požadovaných knihoven, znamená to, že tyto knihovny budou muset být sestaveny samostatně. Informace o tom, kde najít aktuální verze, můžete začít prostudováním dokumentace na adrese www.libgd.org.

Základní principy práce s knihovnou gd

Když je obrázek vytvořen nebo s ním manipulováno pomocí sady nástrojů gd, je obrázek reprezentován ve speciálním formátu gd, který neodpovídá žádnému konvenčnímu typu obrázku. V tomto formátu gd je teoreticky možné exportovat obrázky, ale taková operace se používá jen zřídka, protože výsledný obrázek není komprimován a nelze jej zobrazit v prohlížeči nebo jednoduchém grafickém programu.

Obrázek zpracovaný pomocí sady nástrojů gd je charakterizován informací o šířce, výšce a barvě všech pixelů, jejichž počet je roven součinu šířky a výšky. Program obvykle začíná svou interakci s knihovnou gd buď vytvořením nového prázdného obrázku (na který se má kreslit a kreslit), nebo importem obrázku ze souboru. Obvykle se provádějí následující kroky: za prvé rozložení barev v obrázku, za druhé kreslení a malování nebo manipulace s obrázkem pomocí některých dalších operací, za třetí převod obrázku do obecně uznávaného formátu (například PNG nebo JPEG ) a přenést na místo určení.

Reprezentace barev

Existují dva způsoby, jak reprezentovat barvy v obrázcích gd: reprezentace založená na paletě, která je omezena na 256 barev, a reprezentace skutečných barev, která vám umožňuje zadat libovolný počet různých čísel barev RBG. V gd 1.x bylo jedinou možností použití barev založených na paletách, ale v gd 2.x a verzi této knihovny, která je součástí PHP, je možné vytvářet obrázky založené na paletách i obrázky v realistických barvách. Jedna věc, kterou je třeba mít na paměti, je, že jakýkoli daný obrázek gd musí být buď založen na paletě, nebo musí mít realistické barvy (RGB); to znamená, že není možné zavést realistické barvy do obrázků založených na paletě.

Chcete-li získat původní prázdný obrázek založený na paletě, musíte zavolat funkci ImageCreate() a získat obrázek ve skutečných barvách pomocí funkce ImageCreateTrueColor().

Obrázky založené na paletách

Barvy jsou specifikovány ve formátu Red-Green-Blue (RGB) pomocí tří čísel od 0 do 255. Například barva určená čísly (255, 0, 0) je jasně červená, barva ( 0, 255, 0) - zelená, barva (0, 0, 255) - modrá, barva (0, 0, 0) - černá, barva (255, 255, 255) - bílá a barva (127, 127, 127) - šedá. Vytvářením stále více nových barev můžete libovolně volit hodnoty tří barevných složek.

Jakákoli kresba na obrázku musí být provedena specifickou barvou a před použitím musí být barvy v obrázku rozmístěny. Navíc se první barva distribuovaná v obrázku automaticky stane barvou pozadí. V žádném případě byste tedy neměli předpokládat, že se obejdete bez určení barev, a operace distribuce barev je obvykle první operací po vytvoření nového prázdného obrázku.

Barvy v obrazech založených na paletách jsou vytvářeny pomocí funkce imagecolorallocate(), která jako parametry bere obraz (dříve vytvořený) a tři celá čísla určující poměr červené, zelené a modré. Návratová hodnota je celé číslo, které určuje index nové barvy ve vnitřní paletě obrázku. Tato návratová hodnota musí být přiřazena proměnné, protože zadaná hodnota indexu je potřebná k provedení všech budoucích operací s použitím této barvy.

Obrázky založené na paletách mohou mít maximální počet barev 256. (Čtenáře může nebo nemusí zajímat, na čem jsou takové obrázky ve skutečnosti založeny, ale každý pixel v obrázku založeném na paletě je ve skutečnosti jeden bajt, který ukládá index jednoho prvku v paletě 256 barev.)

Všimněte si, že index vrácený při distribuci jedné z barev v obrázku má smysl pouze pro tento obrázek. Pokud například PHP skript přiřadí $černou k barvě distribuované v jednom obrázku, pak nemá smysl používat tuto proměnnou jako barevný vstup do kreslicího příkazu volaného ke zpracování jiného obrázku.

Obrázky s realistickými barvami

gd 2.0 a novější také poskytuje možnost vytvářet obrazy, které nejsou založeny na paletách, ve kterých je v každém pixelu uloženo libovolné číslo barvy RGB. V tomto tzv. true-color formátu je počet možných barev extrémně velký. Nejen, že tato funkce neomezeně rozšiřuje rozsah uměleckého vyjádření, ale také vám umožňuje věrně reprodukovat obrázky PNG a JPEG s věrnými barvami nahranými do paměti pomocí sady nástrojů gd.

Kromě toho, že se k vytvoření počátečního obrázku používá jiná funkce a neexistují žádná omezení pro výběr různých barev, jsou principy práce s obrázky ve skutečných barvách podobné jako u obrázků založených na paletách.

Zejména můžete stále volat ImageColorAllocate() k vytvoření nových barev a přiřadit proměnné návratovou hodnotu pro pozdější použití v příkazech kreslení. Jediný rozdíl je v tom, že návratovou hodnotou je číslo barvy RGB, nikoli index prvku v paletě. Navíc v obrazech s věrnými barvami neexistuje žádná koncepce barvy pozadí vytvořené jako vedlejší efekt funkce ImageColorAllocate(); V důsledku inicializace je všem pixelům přiřazeno označení černá (0, 0, 0).

Průhlednost

Verze gd 2.x podporují koncept transparentnosti. To používá alfa kanál (kromě hodnot červené, zelené a modré) k označení průhlednosti barvy. To například umožňuje, aby jeden tvar byl superponován na jiný, takže první tvar zůstává částečně viditelný, spíše než aby zcela překrýval druhý.

V PHP má mnoho funkcí pro práci s obrázky analog obsahující v názvu slovo „alfa“, což znamená, že v těchto funkcích je barva reprezentována čtyřmi hodnotami (R, G, B, A). Například funkce imageColorAllocate() přebírá tři parametry a při volání funkce ImageColorAllocateAlpha() musíte zadat čtvrtý parametr s hodnotou mezi 0 a 127. Hodnota nula znamená, že barva je zcela neprůhledná, a hodnota 127 znamená, že barva je zcela neprůhledná

Souřadnice a kreslicí příkazy

Po vytvoření obrázku pomocí sady nástrojů gd je implicitně vytvořen souřadnicový systém, který vám umožňuje v něm specifikovat kreslicí příkazy. Limitní hodnoty souřadnic v tomto systému jsou určeny zadanými parametry šířky a výšky obrazu.

Počátek souřadnic v tomto systému, odpovídající souřadnicím (0, 0), je umístěn v levém horním rohu obrázku. Kladný směr pro hodnoty X je zleva doprava a pro hodnoty Y shora dolů. (V souřadnicových systémech počítačové grafiky je toto umístění počátku běžné, ale ti, kteří studovali analytickou geometrii, jsou zřejmě zvyklí, že počátek je v levém dolním rohu diagramu.)

Počet kreslicích příkazů je velmi velký. Mezi tyto příkazy patří mimo jiné příkazy pro kreslení segmentů čar, obdélníků a oblouků a také příkazy pro nastavení konkrétních hodnot obrazových bodů. Mějte však na paměti, že konečným výsledkem všech těchto příkazů kreslení a vykreslování je nastavení hodnot pixelů. Po provedení příkazů, které mění hodnoty pixelů, nezůstane v paměti žádná stopa (kromě změněných hodnot samotných), takže neexistuje způsob, jak přepsat příkazy kreslení a vykreslování nebo prezentovat výsledky různých příkazů samostatně.

Nic nebrání příkazům kreslení, které přesahují zadaný obrázek, ale takové kreslení nemá žádný viditelný efekt. Například obdélník nebude na obrázku viditelný, pokud jsou všechny hodnoty souřadnic záporné.

Převod formátu

Všechny operace kreslení a manipulace s obrázky se provádějí na obrázku reprezentovaném ve vnitřním formátu gd. A po dokončení těchto operací může skript zavolat některý z převodních a výstupních příkazů (imagepng, imagetjpeg atd.), aby tento obrázek převedl do požadovaného grafického formátu a vydal jej do okna prohlížeče uživatele (nebo do souboru).

Uvolnění zdrojů

Jakmile je výsledek převodu dokončeného gd obrazu přenesen k uživateli, můžeme považovat práci s interní verzí za dokončenou. To znamená, že tato verze musí být zničena. Správný způsob, jak to udělat, je zavolat imagedestroy() s obrázkem jako parametrem.

funkce knihovny gd

V tomto článku nebudeme samostatně vypisovat a popisovat všechny funkce poskytované v rozhraní gd interpretu PHP. Abyste se s těmito informacemi seznámili, doporučujeme použít sekci „Zpracování a generování obrazu“ v příručce php.net. Většina funkcí gd spadá do jedné z kategorií uvedených v tabulce níže. Všimněte si, že názvy funkcí uvedené v této tabulce jsou velké, aby se první písmeno každého slova lépe četlo, ale tato podmínka není v příkladech kódu vždy dodržena, protože názvy funkcí PHP nerozlišují malá a velká písmena:

Klasifikace funkcí gd Typ Příklad Poznámka
Funkce tvorby obrazu ImageCreate(), ImageCreateTruecolor(), ImageCreateFromGd(), ImageCreateFromJpeg() Vraťte nový obrázek gd. Funkce ImageCreate() bere jako parametry šířku a výšku obrázku a parametry dalších funkcí jsou cesta k souboru, URL nebo řetězec obsahující dříve vytvořený obrázek, který by měl být načten a převeden do formátu gd.
Funkce, které provádějí operace distribuce barev ImageColorAllocate(), ImageColorAllocateAlpha(), ImageColorDeallocate() Funkce ImageColorAllocate() bere jako parametry popisovač obrázku a požadované hodnoty červené, zelené a modré a poté vrací číslo barvy pro pozdější použití při operacích kreslení a vykreslování. Funkce ImageColorAllocateAlpha přijímá další parametr – koeficient průhlednosti (0-127)
Funkce, které provádějí operace přizpůsobení barev ImageColorClosest(), ImageColorClosestAlpha(), ImageColorExact(), ImageColorExactAlpha() Vraťte index odpovídající barvy v paletovaném obrázku. Funkce obsahující ve svém názvu slovo „Nejbližší“ vrátí barvu, která se nejvíce shoduje (přesnost shody se měří jako vzdálenost mezi body v prostoru hodnot RGB); funkce s označením "Přesná" vracejí číslo barvy pouze v případě, že je totožné s hledanou, jinak vrací hodnotu -1, funkce s názvem "Alfa" pracují s barvami, které jsou určeny pomocí čtyř hodnot (s průhledné barvy)
Funkce kreslení čar ImageLine(), ImageDashedLine(), ImageRectangle(), ImagePolygon(), ImageEllipse(), ImageArc() Používají se ke kreslení přímých segmentů nebo křivek zadaného tvaru. Obvykle je prvním parametrem každé z těchto funkcí obrázek, posledním parametrem je barva a mezilehlými parametry jsou souřadnice X a Y.
Nastavení pera pro kreslení čar ImageSetStyle(), ImageSetThickness() Změňte nastavení, která ovlivňují charakteristiky čar vytvořených následnými příkazy pro kreslení čar (některé z těchto funkcí jsou použitelné pouze pro gd 2.0.1 nebo novější verze)
Funkce kreslení a vyplňování ImageFilledRectangle(), ImageFilledEllipse(), ImageFilledPolygon(), ImageFilledArc(), ImageFill() Zpravidla jsou podobné odpovídajícím funkcím pro kreslení čar, ale umožňují nejen kreslení obrysů oblastí, ale také vyplnění vytvořených oblastí barvou. Speciální funkce ImageFill() provádí operaci výplně pomocí zadané barvy výplně. Vyplňování se provádí ve všech směrech počínaje zadanými souřadnicemi XY (některé z těchto funkcí vyžadují gd 2.0.1 nebo novější)
Funkce pro práci s textem ImageString(), ImageLoadFont() Funkce ImageString bere jako parametry popisovač obrázku, číslo písma, souřadnice X a Y, textový řetězec a barvu. Pokud je číslo písma mezi 1 a 5, pak se pro zobrazení řádku v této barvě použije jedno z pěti vestavěných písem. Na druhou stranu, číslo písma větší než 5 označuje výsledek načtení specializovaného písma pomocí funkce ImageLoadFont()
Funkce exportu ImagePng(), ImageJpeg() Převeďte interní obrázek gd na obrázek příslušného formátu a poté jej odešlete do výstupního proudu. Pokud je zadán pouze jeden parametr (popisovač obrázku), obrázek se uživateli odešle, a pokud se použije další parametr, kterým je cesta k souboru, cíl výstupního proudu se stane souborem.
Funkce ničení obrazu ImageDestroy() Vezme popisovač obrázku jako parametr a uvolní všechny prostředky spojené s obrázkem
Podpora obrázků HTTP

Aby se obrázek správně zobrazil v prohlížeči uživatele, je nutné určit, odkud má obrázek pocházet a jaký je jeho formát. Proto bohužel není možné jednoduše implementovat např. volání funkce imageToPng() do vygenerovaného HTML souboru a vyřešit tak problém se zobrazením obrázku. V podstatě musíte střídat výstupní kód obrázku s kódem HTML generovaným v PHP skriptu, a k tomu můžete použít jednu ze tří níže popsaných možností.

Vytváření celostránkových obrázků

Celou vygenerovanou stránku lze naformátovat jako obrázek. V tomto případě musíte před data obrázku předat hlavičku HTTP, čímž deklarujete, že to, co následuje, je obrázek určitého typu. Na konci skriptu mohou být například uvedeny následující řádky:

// ... kód, který vytvoří obrázek a přiřadí jej // k proměnné $image header("Content-type: image/png"); // Zobrazení názvu v prohlížeči imagepng($image); // Předání dat samotného obrázku převedeného do formátu PNG imagedestroy($image); // Uvolněte zdroje

Výhodou tohoto přístupu je, že jakákoliv informace, včetně parametrů POST, může být použita k předání instrukcí o složení budoucího snímku. Nevýhodou je, že výsledná stránka nemůže obsahovat žádný běžný HTML kód. Ve skutečnosti si dokonce musíte dávat pozor, abyste ve skriptech neposílali žádný textový výstup před titulkem a obrázkem, protože to znamená předčasné odeslání obsahu. V tomto případě se zobrazí chybová zpráva „Záhlaví již odeslána...“.

Vkládání obrázků uložených v souborech

Nejprve si všimněte, že HTML podporuje deskriptor , který umožňuje vložit obrázek zadáním cesty k souboru obrázku nebo adresy URL, jako v následujícím příkladu:

Tento návrh se vztahuje na soubory statických obrázků, ale není důvod, proč by nemohl povolit vkládání nově vytvořeného obrázku. Můžete tedy připravit skript, ve kterém se nejprve vytvoří obrázek, poté se data obrázku zapíší do lokálního souboru a poté se vygeneruje HTML kód s odpovídajícím deskriptorem , ukazující na nově vytvořený soubor.

Jedinou nevýhodou tohoto přístupu je to, že za prvé, proces vytváření stránky musí zahrnovat zápisy do souboru, což může být časově náročné, a zadruhé musíte určit, co se soubory dělat, až je skončíte.

Ale v určité situaci je tento přístup ideální. Jde o vytváření a ukládání obrázků, které představují konečnou množinu možností. V tomto případě existuje specifický způsob, jak přiřadit konkrétní situaci k názvu souboru obrázku. Když nastanou některé z těchto situací, které vyžadují výstup obrázku, zkontroluje se, zda již existuje odpovídající soubor. Pokud je odpověď kladná, jednoduše se použije odkaz na tento soubor ve formátu deskriptoru , a pokud je odpověď ne, pak se vytvoří obrázek, zapíše se do souboru a pak se znovu použije odkaz na tento obrázek. Vytváření nových souborů nakonec prostě nebude nutné.

Vkládání obrázků generovaných ve skriptech

Konečně neexistuje žádný důvod, proč byste nemohli poskytnout samostatný skript obrázku a poté vložit výsledný obrázek na dynamickou stránku vygenerovanou jiným skriptem zadáním v deskriptoru URL tohoto skriptu. Jediným problémem je vybrat, jak přenést potřebná data na závislou stránku. Například úchyt označující vložený obrázek může vypadat takto:

V tomto případě skript ballpage.php vrací PNG obrázky barevných kuliček umístěných na různých pozicích v obrázku.

Použití tohoto přístupu však může způsobit problémy, protože webové servery a prohlížeče někdy kontrolují přípony zpracovávaných souborů, a když obdrží výsledky kontroly, reagují na ně odlišně. Například skript vykreslování ballpage může vyžadovat příponu .php, aby server Apache mohl určit, že kód serveru by měl být interpretován jako kód PHP (ačkoli požadovaný režim zpracování lze určit také prostřednictvím konfiguračních souborů).

Existují však i nestandardní verze prohlížečů, které neberou v úvahu možnost, že soubor s příponou .php vytvoří obrázek, přestože předaná hlavička naznačuje, že obrázek následuje. Při použití této metody je tedy potřeba otestovat skripty v různých prohlížečích a ujistit se, že zamýšlený okruh uživatelů obdrží stránky ve vámi zamýšlené podobě.

Níže jsou uvedeny příklady použití knihovny gd k vytváření obrázků.

Příklad použití knihovny gd: vytváření jednoduchých tvarů

V následujícím příkladu si ukážeme, jak pomocí knihovny gd vygenerovat výkres obsahující jednoduché geometrické tvary:

Nahraďte nastavení vlastním a uložte tento soubor pod názvem connect-to-database.php do složky fcdemo.

Vložíme náhodná data

Pokud by se jednalo o skutečný projekt, tabulka uživatelů by se časem rozrostla, ale pro demonstraci musíme vložit nějaká data. Napíšeme si malý skript, který do tabulky vloží náhodná data. Nedělejte si starosti, pokud nerozumíte následujícímu kódu – pro tento tutoriál to není důležité.

Uložte tento soubor s názvem create-random-data.php vše do stejné složky.

Nejprve zahrneme soubor připojení k databázi. Poté nastavíme časový rámec, ze kterého bude náhodně vybrán čas pro registraci uživatele. Můžete změnit počet řádků, které se mají vložit. Chcete-li to provést, musíte upravit proměnnou $RecordsToInsert.

Poté spustíme skript pro vložení vygenerovaných záznamů do databáze. Chcete-li zahájit tento proces, přejděte na tuto adresu - http://localhost/fcdemo/generate-random-data.php.

Nakonec byste měli vidět zprávu: "Vložené ($RecordsToInsert) záznamy"

Krok 2. Připravte kostru webu

Potřebujeme vytvořit velmi jednoduchou stránku pro zobrazení našeho grafu. Něco takového:

FusionCharts v3.2 – LinkedCharts PHP Demo