Izdelava grafa s knjižnico GD. Risanje grafov v PHP Kaj smo spremenili

Če želite prepoznati uporabo grafičnih orodij v spletnih scenarijih, upoštevajte naslednji obseg možnih primerov uporabe grafike:

  • Statične slike, ustvarjene neodvisno ali od nekje izposojene, je mogoče vdelati v stran HTML.
  • Uporabite lahko programsko ustvarjene slike (HTML + CSS).
  • S knjižnico gd lahko vnaprej ustvarite statične grafike za vse možne situacije, ki se lahko pojavijo med izvajanjem skripta, jih shranite v datoteke in pogojno prikažete.

Možnosti uvedbe grafike s statičnimi slikami zaradi njene preprostosti ne bomo upoštevali, zato bomo najprej razmislili o enostavni možnosti (HTML + CSS grafika), nato pa o uporabi knjižnice gd v PHP.

Grafika HTML + CSS

Obiskovalci spletnega mesta poznajo vodoravne palične grafe z barvnimi stranicami, ki se še posebej pogosto uporabljajo za ponazoritev rezultatov anket. Na prvi pogled se zdi, da se za ustvarjanje takšnih diagramov uporabljajo nekakšna grafična orodja, v resnici pa je dovolj, da uporabite nekaj preprostih skriptov:

Delo z grafiko v PHP, HTML, CSS /* slogi CSS, ki tvorijo dizajn */ body div (height: 1em; display: inline-block; vertical-align: middle) span ( display: inline-block; width: 120px) .orange (ozadje: oranžno) .apple (ozadje: #33CC66) .banana (ozadje: rumeno) .paradižnik (ozadje: rdeče) .cucumber (ozadje: zeleno) .krompir (ozadje: sivo) Naročilnica Sadje Pomaranče Jabolka Banane Zelenjava Paradižnik Kumare Krompir

Ta primer ne prikazuje nobenih novih funkcij PHP, ampak preprosto prikazuje preprost način za ustvarjanje grafike z uporabo HTML in CSS (v tem primeru palični grafikoni):

gd knjižnica

Grafična orodja, opisana v prejšnjem razdelku, praktično izčrpajo zmogljivosti standardne kode HTML (čeprav velja omeniti, da nismo zajeli dokaj zmogljivega orodja za ustvarjanje grafike HTML5 Canvas). Zdaj pa preidimo na opis metod za ustvarjanje resnično poljubne grafike z uporabo knjižnice gd.

Splošni opis knjižnice gd

Na splošno je komplet orodij gd knjižnica kode C za ustvarjanje in obdelavo slik. To knjižnico so prvotno razvili in dali na voljo javnosti nadarjeni in radodarni zaposleni Boutell.com.

Sama knjižnica gd ni grafični ali risarski program, niti ne predstavlja samostojne aplikacije ali grafičnega uporabniškega vmesnika. Namesto tega knjižnica gd ponuja funkcije, ki jih lahko pokliče kateri koli program za izvedbo želene manipulacije slike. To pomeni, da lahko knjižnico gd povežemo s katerim koli programom C, v katerem je potrebno uporabiti kodo te knjižnice. Prav to je problem, ki so ga rešili razvijalci sistema PHP.

Pravzaprav je bil v ta namen napisan niz vmesniških funkcij, ki olajšajo klicanje gd procedur iz skripta PHP. Toda sama knjižnica gd ne vsebuje nobene kode, specifične za PHP, in vmesniki so bili razviti, da bi omogočili dostop do knjižnice iz več drugih programskih jezikov in programskih okolij, vključno s Perlom, Pascalom, Haskellom in REXX.

Knjižnica gd vam omogoča, da pokličete funkcije za ustvarjanje izvornih slik (sprva praznih, ki spominjajo na prazen list papirja), risanje in barvanje znotraj teh izvornih slik na različne načine ter končno pretvorbo slike iz notranjega formata slike gd v standardni formatu slike in jo nato pošljite na končni cilj (izpis v okno brskalnika ali shranjevanje v datoteko ali zbirko podatkov). In ker se vse te operacije izvajajo pod nadzorom programa in se ne izvajajo ročno, lahko ustvarjene slike postanejo poljubno zapletene in odvisne od kakršnih koli situacij med izvajanjem programa, od katerih jih je zaželeno narediti odvisne.

Formati slik

Knjižnica gd vam v bistvu omogoča uvoz in izvoz slik z uporabo najrazličnejših formatov. Najbolj priljubljeni formati slik so GIF, JPEG in PNG, čeprav uporabljeni primeri uporabljajo predvsem slednjega.

Formata GIF in PNG sta namenjena opisu mreže barvnih elementov, ki ustrezajo slikovnim pikam, z nekaterimi dodatki. Prvi dodatek je, da lahko celice vsebujejo dejanske barvne številke ali indekse v tabeli barvnih številk. (Prva možnost vam omogoča ustvarjanje bolj ekspresivnih slik, saj vam omogoča, da zagotovite poljubno število različnih barv, zadnja možnost pa vam pomaga ustvariti bolj kompaktne slike.)

Drugi dodatek je naslednji. Seveda je konceptualna predstavitev formatov GIF in PNG precej preprosta, vendar v praksi branje, pisanje in prenos slik v teh formatih vedno poteka v stisnjeni obliki. Stiskanje je potrebno, ker shranjevanje podatkov, predstavljenih kot mreža celic, zahteva veliko količino pomnilnika. Preprosta slika velikosti 500 x 400 slikovnih pik vsebuje 200.000 slikovnih pik, in če vsaka slikovna pika zahteva tri bajte, je potrebna količina pomnilnika že več kot pol megabajta.

Tema stiskanja je obsežna in zapletena, vendar večina algoritmov stiskanja temelji na zmanjšanju redundance slike, da se zmanjša njena velikost. (Na primer, potrebovali boste manj pomnilniškega prostora, da določite, da je vsaka slikovna pika na sliki zelena, kot da podate zeleno vrednost za vsako slikovno piko posebej.) Na žalost se algoritmi stiskanja ne zanašajo na uporabo teh lastnosti, ker se morajo odločiti, kompleksnih problemov, da so metode za reševanje teh problemov, implementirane v algoritem stiskanja, ki se uporablja za generiranje slik v formatu GIF, celo patentirane.

Namestitev knjižnice

Odkrito povedano, naloga namestitve knjižnice gd in njenega uspešnega delovanja v povezavi s sistemom PHP je precej zapletena. To ni posledica kakršnih koli pomanjkljivosti v programski opremi PHP ali gd, ampak v celoti zaradi težav s konfiguracijo; zlasti morate razumeti, kje bi morale biti in dejansko so knjižnice gd, ter zagotoviti, da so koraki prevajanja in povezovanja vseh izvršljivih datotek pravilno zaključeni. Zato je najboljša možna situacija ta, da uporabnik ugotovi, da je knjižnica gd že nameščena in je podpora za gd že omogočena v sistemu PHP (bodisi z dovoljenjem podjetja za spletno gostovanje ali ker je vključena v nameščen sistem PHP).

Zato se mora namestitev knjižnice gd začeti od ničelnega koraka - s preverjanjem, ali je ta knjižnica že nameščena. Najprej v datoteko skripta vnesite naslednjo kodo in si oglejte rezultate izvajanja v brskalniku, ne glede na to, ali vaše skripte izvaja vaše podjetje za spletno gostovanje ali pa jih v celoti izvaja vaša namestitev:

Po prikazu te strani na zaslonu preprosto poiščite besedilni niz "gd" v oknu brskalnika. To bi moralo razkriti pododdelek, ki opisuje obseg, v katerem vaša namestitev PHP omogoča podporo za knjižnico gd. Če nameravate pripraviti samo določene vrste slik (na primer PNG) in rezultati funkcije phpinfo() kažejo, da je podpora za to vrsto slik omogočena, lahko začnete takoj. In če informacije o različici gd vključujejo besedo "bundled", potem je uporabljena knjižnica gd, ki je priložena PHP.

Če se poskus iskanja omembe knjižnice gd konča neuspešno in sami nameščate PHP, potem lahko namestite in konfigurirate konfiguracijo knjižnice gd. (Po drugi strani pa, če vašo namestitev PHP upravlja vaše podjetje za gostovanje, je vaša edina možnost, da prosite to podjetje, da zagotovi podporo za knjižnico gd, ali uporabite drugo podjetje za spletno gostovanje.)

Uporaba knjižnice gd, ki je priložena PHP, odpravi številne težave, povezane z namestitvijo gd, vendar ne vseh. Dejstvo je, da uporaba same različice, vključene v distribucijski komplet, omogoča pridobitev knjižnice gd, vendar ne nujno vseh knjižnic, ki so potrebne za delovanje gd. Sama knjižnica gd je odvisna od več drugih knjižnic: libpng (za obdelavo slik PNG), zlib (za stiskanje) in jpeg-6b ali novejšo (za obdelavo slik JPEG, če je potrebno). Te knjižnice so že prisotne v številnih namestitvah Linuxa, v tem primeru bo morda zadostovalo, da v možnosti vključite zahtevano možnost with (kot je --with-zlib), ne da bi navedli namestitveni imenik. Če sami konfigurirate PHP, lahko preprosto dodate možnost --with-gd, da zagotovite, da je vključena različica gd vključena v izvršljivo datoteko. In če želite pokazati na drugo različico, namesto tega uporabite možnost --with-gd=path.

Če ugotovite, da ena ali več zahtevanih knjižnic manjka, to pomeni, da bo treba te knjižnice zgraditi ločeno. Za informacije o tem, kje najti trenutne različice, lahko začnete s pregledom dokumentacije na www.libgd.org.

Osnovna načela dela s knjižnico gd

Ko je slika ustvarjena ali obdelana z orodjem gd, je slika predstavljena v posebnem formatu gd, ki ne ustreza nobeni običajni vrsti slike. Teoretično je mogoče izvoziti slike v tem formatu gd, vendar se taka operacija redko uporablja, ker nastala slika ni stisnjena in je ni mogoče prikazati v brskalniku ali preprostem grafičnem programu.

Za sliko, obdelano z orodjem gd, so značilne informacije o širini, višini in barvi vseh slikovnih pik, katerih število je enako zmnožku širine in višine. Običajno program začne svojo interakcijo s knjižnico gd bodisi z ustvarjanjem nove prazne slike (na kateri lahko riše in riše) bodisi z uvozom slike iz datoteke. Običajno se izvedejo naslednji koraki: prvič, porazdelitev barv na sliki, drugič, risanje in slikanje ali obdelava slike z drugimi operacijami, tretjič, pretvorba slike v splošno sprejeto obliko (na primer PNG ali JPEG) in prenesite na cilj.

Predstavitev barv

Obstajata dva načina za predstavitev barv v slikah gd: predstavitev na podlagi palete, ki je omejena na 256 barv, in predstavitev prave barve, ki vam omogoča, da določite poljubno število različnih barvnih številk RBG. V gd 1.x je bila edina možnost uporaba barv, ki temeljijo na paletah, toda v gd 2.x in različici te knjižnice, ki je vključena v PHP, je mogoče ustvariti slike, ki temeljijo na paletah, in slike v realističnih barvah. Ena stvar, ki jo morate imeti v mislih, je, da mora biti katera koli slika gd bodisi na osnovi palete bodisi imeti naravne barve (RGB); to pomeni, da ni možnosti za vnos realističnih barv v slike na podlagi palete.

Če želite dobiti izvirno prazno sliko na podlagi palete, morate poklicati funkcijo ImageCreate(), za pridobitev slike v pravih barvah pa uporabite funkcijo ImageCreateTrueColor().

Slike na osnovi palete

Barve so podane v obliki rdeče-zeleno-modre (RGB) z uporabo treh številk od 0 do 255. Na primer, barva, določena s številkami (255, 0, 0), je svetlo rdeča, barva ( 0, 255, 0) - zelena, barva (0, 0, 255) - modra, barva (0, 0, 0) - črna, barva (255, 255, 255) - bela in barva (127, 127, 127) - siva. Z ustvarjanjem vedno več novih barv lahko poljubno izbirate vrednosti treh barvnih komponent.

Vsaka risba na sliki mora biti narejena z določeno barvo, barve pa morajo biti porazdeljene na sliki, preden se uporabijo. Poleg tega prva barva, porazdeljena na sliki, samodejno postane barva ozadja. Torej v nobenem primeru ne domnevajte, da lahko storite brez podajanja barv, običajno pa je operacija porazdelitve barv prva operacija po ustvarjanju nove prazne slike.

Barve v slikah, ki temeljijo na paleti, so ustvarjene s funkcijo imagecolorallocate(), ki kot parametre vzame sliko (ustvarjeno prej) in tri cela števila, ki določajo delež rdeče, zelene in modre barve. Vrnjena vrednost je celo število, ki določa indeks nove barve v notranji paleti slike. Ta vrnjena vrednost mora biti dodeljena spremenljivki, ker je navedena vrednost indeksa potrebna za izvajanje vseh prihodnjih operacij s to barvo.

Slike, ki temeljijo na paletah, imajo lahko največje število barv 256. (Bralca bo morda zanimalo ali pa tudi ne, na čem takšne slike dejansko temeljijo, vendar je vsaka slikovna pika v sliki, ki temelji na paleti, pravzaprav en sam bajt, ki hrani indeks enega elementa v paleti 256 barv.)

Upoštevajte, da je indeks, vrnjen pri porazdelitvi ene od barv na sliki, pomemben samo za to sliko. Na primer, če skript PHP dodeli $black barvi, porazdeljeni na eni sliki, potem nima smisla uporabljati te spremenljivke kot barvni vhod v ukaz za risanje, ki je poklican za obdelavo druge slike.

Slike z realističnimi barvami

gd 2.0 in novejše različice ponujajo tudi možnost ustvarjanja slik, ki ne temeljijo na paleti, v katerih vsaka slikovna pika shrani poljubno barvno številko RGB. V tem tako imenovanem formatu prave barve je število možnih barv izjemno veliko. Ne samo, da ta funkcija neomejeno širi obseg umetniškega izražanja, ampak vam omogoča tudi zvesto reprodukcijo slik PNG in JPEG z resničnimi barvami, naloženimi v pomnilnik z uporabo orodja gd toolkit.

Razen tega, da se za ustvarjanje začetne slike uporablja drugačna funkcija in ni nobenih omejitev pri izbiri različnih barv, so načela dela s slikami v pravi barvi podobna kot pri slikah, ki temeljijo na paletah.

Zlasti lahko še vedno pokličete ImageColorAllocate(), da ustvarite nove barve in spremenljivki dodelite vrnjeno vrednost za kasnejšo uporabo v ukazih za risanje. Edina razlika je v tem, da je vrnjena vrednost številka barve RGB in ne indeks elementa v paleti. Poleg tega pri slikah z resničnimi barvami ni koncepta barve ozadja, ki bi bila ustvarjena kot stranski učinek funkcije ImageColorAllocate(); Kot rezultat inicializacije se vsem slikovnim pikam dodeli črna oznaka (0, 0, 0).

Preglednost

Različice gd 2.x podpirajo koncept preglednosti. To uporablja kanal alfa (poleg rdečih, zelenih in modrih vrednosti), ki označuje, kako transparentna je barva. To omogoča na primer, da se ena oblika prekrije z drugo, tako da prva oblika ostane delno vidna, namesto da popolnoma prekriva drugo.

V PHP imajo številne funkcije za delo s slikami analog, ki v imenu vsebuje besedo "alfa", kar pomeni, da je v teh funkcijah barva predstavljena s štirimi vrednostmi (R, G, B, A). Na primer, funkcija imageColorAllocate() sprejme tri parametre, pri klicu funkcije ImageColorAllocateAlpha() pa morate podati četrti parameter z vrednostjo med 0 in 127. Vrednost nič pomeni, da je barva popolnoma neprozorna, vrednost pa od 127 pomeni, da je barva popolnoma neprozorna

Koordinate in ukazi za risanje

Po izdelavi slike s kompletom orodij gd se implicitno ustvari koordinatni sistem, ki vam omogoča, da v njem določite ukaze za risanje. Mejne vrednosti koordinat v tem sistemu so določene z določenimi parametri širine in višine slike.

Izhodišče koordinat v tem sistemu, ki ustreza koordinatam (0, 0), se nahaja v zgornjem levem kotu slike. Pozitivna smer za vrednosti X je od leve proti desni, za vrednosti Y pa od zgoraj navzdol. (V koordinatnih sistemih računalniške grafike je ta lokacija izhodišča pogosta, vendar se zdi, da so tisti, ki so študirali analitično geometrijo, navajeni, da je izhodišče v spodnjem levem kotu diagrama.)

Število ukazov za risanje je zelo veliko. Ti ukazi med drugim vključujejo ukaze za risanje odsekov črt, pravokotnikov in lokov ter ukaze za nastavitev določenih vrednosti slikovnih pik. Vendar ne pozabite, da je končni rezultat vseh teh ukazov za risanje in risanje nastavitev vrednosti slikovnih pik. Po izvedbi ukazov, ki spremenijo vrednosti slikovnih pik, v pomnilniku ne ostane nobena sled (razen samih spremenjenih vrednosti), zato ni možnosti, da bi preglasili ukaze za risanje in risanje ali ločeno predstavili rezultate različnih ukazov.

Nič ne preprečuje risanja ukazov, ki segajo izven navedene slike, vendar takšno risanje nima vidnega učinka. Na primer, pravokotnik na sliki ne bo viden, če so vse vrednosti koordinat negativne.

Pretvorba formata

Vse operacije risanja in manipulacije s slikami se izvajajo na sliki, predstavljeni v notranjem formatu gd. Ko so te operacije končane, lahko skript pokliče enega od ukazov za pretvorbo in izhod (imagepng, imagetjpeg itd.), da pretvori to sliko v zahtevano grafično obliko in jo izpiše v okno brskalnika uporabnika (ali v datoteko).

Sprostitev virov

Ko je rezultat pretvorbe dokončane gd slike prenesen na uporabnika, lahko štejemo, da je delo z interno različico zaključeno. To pomeni, da je treba to različico uničiti. Pravilen način za to je, da pokličete imagedestroy() s sliko kot parametrom.

funkcije knjižnice gd

V tem članku ne bomo posebej našteli in opisali vseh funkcij, ki so na voljo v vmesniku gd tolmača PHP. Če se želite seznaniti s temi informacijami, priporočamo uporabo razdelka »Obdelava in ustvarjanje slik« v priročniku za php.net. Večina funkcij gd spada v eno od kategorij, prikazanih v spodnji tabeli. Upoštevajte, da so imena funkcij, navedena v tej tabeli, napisana z veliko začetnico, da je prva črka vsake besede lažja za branje, vendar ta pogoj ni vedno upoštevan v primerih kode, ker imena funkcij PHP niso občutljiva na velike in male črke:

Klasifikacija gd funkcij Tip Primer Opomba
Funkcije za ustvarjanje slik ImageCreate(), ImageCreateTruecolor(), ImageCreateFromGd(), ImageCreateFromJpeg() Vrni novo sliko gd. Funkcija ImageCreate() kot parametra vzame širino in višino slike, parametri drugih funkcij pa so pot do datoteke, URL ali niz, ki vsebuje predhodno ustvarjeno sliko, ki jo je treba naložiti in pretvoriti v format gd
Funkcije, ki izvajajo operacije distribucije barv ImageColorAllocate(), ImageColorAllocateAlpha(), ImageColorDeallocate() Funkcija ImageColorAllocate() vzame ročico slike in zahtevane vrednosti rdeče, zelene in modre kot parametre, nato pa vrne barvno številko za poznejšo uporabo pri risanju in risanju. Funkcija ImageColorAllocateAlpha sprejme dodaten parameter - koeficient prosojnosti (0-127)
Funkcije, ki izvajajo operacije ujemanja barv ImageColorClosest(), ImageColorClosestAlpha(), ImageColorExact(), ImageColorExactAlpha() Vrni indeks ujemajoče se barve na sliki s paleto. Funkcije, ki v svojem imenu vsebujejo besedo "Najbližje", vrnejo barvo, ki se najbolj ujema (natančnost ujemanja se meri kot razdalja med točkami v prostoru vrednosti RGB); funkcije z oznako "Exact" vrnejo številko barve le, če je enaka iskani, sicer vrnejo vrednost -1, funkcije z imenom "Alpha" delujejo z barvami, ki so določene s štirimi vrednostmi (z prozorne barve)
Funkcije risanja črt ImageLine(), ImageDashedLine(), ImageRectangle(), ImagePolygon(), ImageEllipse(), ImageArc() Uporabljajo se za risanje ravnih segmentov ali krivulj določene oblike. Običajno je prvi parameter vsake od teh funkcij slika, zadnji parameter je barva, vmesna parametra pa sta koordinati X in Y.
Nastavitve peresa za risanje črt ImageSetStyle(), ImageSetThickness() Spreminjanje nastavitev, ki vplivajo na značilnosti črt, ki jih ustvarijo kasnejši ukazi za risanje črt (nekatere od teh funkcij so uporabne le za gd 2.0.1 ali novejše različice)
Funkcije risanja in polnjenja ImageFilledRectangle(), ImageFilledEllipse(), ImageFilledPolygon(), ImageFilledArc(), ImageFill() Praviloma so podobne ustreznim funkcijam za risanje črt, vendar ne omogočajo samo risanja kontur območij, temveč tudi zapolnjevanje ustvarjenih območij z barvo. Posebna funkcija ImageFill() izvede operacijo polnila z uporabo določene barve polnila. Polnjenje poteka v vseh smereh, začenši z določenimi koordinatami XY (nekatere od teh funkcij zahtevajo gd 2.0.1 ali novejšo)
Funkcije za delo z besedilom ImageString(), ImageLoadFont() Funkcija ImageString vzame kot parametre ročaj slike, številko pisave, koordinate X in Y, besedilni niz in barvo. Če je številka pisave med 1 in 5, se za prikaz vrstice v tej barvi uporabi ena od petih vgrajenih pisav. Po drugi strani pa številka pisave, večja od 5, označuje rezultat nalaganja specializirane pisave s funkcijo ImageLoadFont().
Izvozne funkcije ImagePng(), ImageJpeg() Pretvorite notranjo sliko gd v sliko ustreznega formata in nato to sliko pošljite v izhodni tok. Če je določen samo en parameter (ročica slike), se slika prikaže uporabniku, in če je uporabljen dodaten parameter, ki je pot do datoteke, postane cilj izhodnega toka datoteka
Funkcija uničenja slike ImageDestroy() Vzame ročico slike kot parameter in sprosti vse vire, povezane s sliko
Podpora za slike HTTP

Da bi bila slika pravilno predstavljena v brskalniku uporabnika, je treba določiti, od kod naj slika prihaja in kakšen je njen format. Zato žal ni mogoče preprosto implementirati na primer klica funkcije imageToPng() v generirano datoteko HTML in s tem rešiti težave s prikazom slike. V bistvu morate izhodno kodo slike zamenjati s kodo HTML, ustvarjeno v skriptu PHP, in za to lahko uporabite eno od treh možnosti, opisanih spodaj.

Ustvarjanje celostranskih slik

Celotno ustvarjeno stran je mogoče oblikovati kot sliko. V tem primeru morate posredovati glavo HTTP pred slikovnimi podatki in s tem razglasiti, da je tisto, kar sledi, slika določene vrste. Na koncu skripta so lahko na primer naslednje vrstice:

// ... koda, ki ustvari sliko in jo // dodeli spremenljivki $image header("Content-type: image/png"); // Prikaz naslova v brskalniku imagepng($image); // Posredovanje podatkov same slike, pretvorjene v format PNG imagedestroy($image); // Sprostitev virov

Prednost tega pristopa je, da se lahko vse informacije, vključno s parametri POST, uporabijo za posredovanje navodil o sestavi prihodnje slike. Slaba stran je, da končna stran ne more vsebovati običajne kode HTML. Pravzaprav morate celo paziti, da ne pošljete besedila pred naslovom in sliko v skriptih, saj je to enako prezgodnjemu pošiljanju vsebine. V tem primeru se prikaže sporočilo o napaki "Headers already sent ..." (Glave so že poslane ...).

Vdelava slik, shranjenih v datotekah

Najprej upoštevajte, da HTML podpira deskriptor , ki vam omogoča, da vdelate sliko tako, da podate pot slikovne datoteke ali URL, kot v naslednjem primeru:

Ta zasnova velja za statične slikovne datoteke, vendar ni razloga, da ne bi omogočila vdelave novo ustvarjene slike. Zato lahko pripravite skript, v katerem se najprej ustvari slika, nato se slikovni podatki zapišejo v lokalno datoteko, nato pa se ustvari koda HTML z ustreznim deskriptorjem , ki kaže na novo ustvarjeno datoteko.

Edina slabost tega pristopa je, da mora, prvič, postopek izdelave strani vključevati pisanje datotek, kar je lahko dolgotrajno, in, drugič, morate določiti, kaj storiti z datotekami, ko jih nehate uporabljati.

Toda v določeni situaciji je ta pristop idealen. Gre za ustvarjanje in predpomnjenje slik, ki predstavljajo končen nabor izbir. V tem primeru obstaja poseben način za povezovanje določene situacije z imenom slikovne datoteke. Ko pride do nekaterih od teh situacij, ki zahtevajo izpis slike, se preveri, ali ustrezna datoteka že obstaja. Če je odgovor pozitiven, se preprosto uporabi povezava do te datoteke, oblikovana kot deskriptor , in če je odgovor ne, se ustvari slika, zapiše v datoteko, nato pa se ponovno uporabi povezava do te slike. Konec koncev ustvarjanje novih datotek preprosto ne bo potrebno.

Vdelava slik, ustvarjenih v skriptih

Končno, ni razloga, zakaj ne bi mogli zagotoviti samostojnega slikovnega skripta in nato dobljene slike vdelati v dinamično stran, ki jo ustvari drug skript, tako da navedete deskriptor URL tega skripta. Edina težava je izbira načina prenosa potrebnih podatkov na odvisno stran. Na primer, ročica, ki označuje vdelano sliko, je lahko videti takole:

V tem primeru skript ballpage.php vrne slike PNG barvnih kroglic, ki se nahajajo na različnih mestih na sliki.

Toda uporaba tega pristopa lahko povzroči težave, ker spletni strežniki in brskalniki včasih preverijo pripone datotek, ki se obdelujejo, in se, ko prejmejo rezultate preverjanja, nanje odzovejo drugače. Na primer, skriptu za upodabljanje ballpage bo morda treba dati pripono .php, da lahko strežnik Apache ugotovi, da je treba kodo strežnika interpretirati kot kodo PHP (čeprav je zahtevani način obdelave mogoče določiti tudi prek konfiguracijskih datotek).

Obstajajo pa tudi nestandardne različice brskalnikov, ki ne upoštevajo možnosti, da datoteka s končnico .php ustvari sliko, čeprav posredovana glava kaže, da sledi slika. Zato morate pri uporabi tega načina preizkusiti skripte v različnih brskalnikih in se prepričati, da bo predvideni krog uporabnikov prejel strani v obliki, kot ste si jih zamislili.

Spodaj so primeri uporabe knjižnice gd za ustvarjanje slik.

Primer uporabe knjižnice gd: ustvarjanje preprostih oblik

V naslednjem primeru bomo pokazali, kako uporabiti knjižnico gd za ustvarjanje risbe, ki vsebuje preproste geometrijske oblike:

Zamenjajte nastavitve s svojimi in shranite to datoteko pod imenom connect-to-database.php v mapo fcdemo.

Vstavimo naključne podatke

Če bi bil to pravi projekt, bi se tabela uporabnikov sčasoma povečala, a zaradi predstavitve moramo vnesti nekaj podatkov. Napišimo majhen skript, ki bo v tabelo vstavil naključne podatke. Ne skrbite, če ne razumete naslednje kode – za to vadnico ni pomembna.

Shranite to datoteko z imenom generate-random-data.php vse v isto mapo.

Najprej vključimo datoteko za povezavo z bazo podatkov. Nato določimo časovni okvir, iz katerega bo naključno izbran čas za registracijo uporabnika. Spremenite lahko število vrstic, ki jih želite vstaviti. Če želite to narediti, morate prilagoditi spremenljivko $RecordsToInsert.

Nato zaženemo skripto za vstavljanje generiranih zapisov v bazo. Če želite začeti ta postopek, pojdite na ta naslov - http://localhost/fcdemo/generate-random-data.php.

Sčasoma bi morali videti sporočilo: "Vstavljeni ($RecordsToInsert) zapisi"

2. korak. Pripravite okostje spletne strani

Ustvariti moramo zelo preprosto stran za prikaz našega grafikona. Nekaj ​​podobnega:

FusionCharts v3.2 – LinkedCharts PHP Demo