![]() |
|
||||||
|
|
| 06.09.10 / 21:15 |
|
Heikko Ellermaa
Php pole niisiis kõigest dünaamilise teksti loomiseks, vaid sellega võibvabalt ka dünaamiliselt pilte teha. Selleks on vajalik "gd" mooduli lisamine php-sse. Php GD on niisiis graafikamoodul, sõltub süsteemsest gd library'st ja pakub kasutada kõiki image_* funktsioone. Sellest kuidas mooduleid kompileerida või lisada siin juttu ei tule. Lühidalt kui phpinfo() annab mingit infot GD kohta, siis on see alustuseks päris hea. Võimalikud pildifailitüübid on hetkel jpg ja png. Vanema gd puhul on võimalik ka gif'i kasutamine, kuid alates mingist versioonist pole see enam gd osa. Gifi asemel on soovitatav kasutada png failiformaati. Asja juurde. Oletame et tahetakse luua uut pilti. Selleks on ImageCreate() nimeline funktsioon. PHP kood:
See on nüüd enamvähem üksühele php manuaalist maha pandud. Ärge kandke viha :) Aga mis siin siis toimub ikkagi? Kõigepealt tekitame uue pildi objekti, mis säilitakse $im muutujas. Parameetriteks on pildi suurus. Pildi võib luua ka olemasolevast pildifailist, selleks on ImageCreateFrom*() funktsioonid erinevate failitüüpide jaoks. Siis paneme paika värvid real 1 ja 2. Nende määramine toimub ImageColorAllocate() abil, mille parameetritekse on pildi objekt ja RGB toonid kümnendsüsteemi täisarvudena. Mõnes mõttes on see tüütu, kui inimesed veebis tavaliselt kasutavad 16nd süsteemi esitust RGB värvidest (see on siis näuiteks valge puhul "FFFFFF"). Edaspidi tuleb ka pisike funktsioon, mis neid teisendab. Edasi täidetakse pildi taust taustavärviga (rida 4), selleks sai kasutatud ImageFillToBorder funktsiooni. Kuna taustavärvi veel kusagil varem pole siis täitab ta pildi algusest lõpuni. Parameetriteks olevaid koordinaate loetakse ülevalt vasakust nurgast. Ehk siis seal on punk (0,0) ja all paremas on (max,max), meie näite puhul (50,100). Järgmine asi on teksti väljastamine (rida 5). Enamikul juhtudel on hea lihtne kasutada standardset fonti, mille suurus on ImageString funktsiooni teine argument. Suurused saavad olla 1-st 5-ni, mis tähistavad standardseid fonte, suurem number tähendab suuremat fonti. Kui on soov kasutada oma fonte, siis tasuks uurida ImageTTFText() funktsiooni või siis ImagePS...() funktsioone. Esimene neist on TrueType fontide ning teised PostScript fontide kasutamiseks. Nüüd oleme pildiga nii kaugel, et seda võiks juba vaadata. Selleks väljastame kõigepealt HTML päise, funktsiooni header() abil. Kavatsen väljastada png pildi, niisiis on selleks päiseks: "Content-type:, jpg puhul oleks tegemist "Content-type: image/jpeg" ja gif'ipuhul "Content-type: image/gif". Tegemist on standardsete 'mime' päistega,mille järgi brauser vaatab, mis tüüpi failiga on tegemist. Kasulik on see päis väljastada vahetult enne pildi enda väljastamist (see on siis siin näites ImagePng() funkstiooni). See annab meile võimaluse php poolt väljastatud võimalikke veateateid brauseris näha. Juhul kui me teeks seda esimese asjana oma scriptis, siis saaksime vaid katkise pildi ikooni. Ja viimane asi ongi vastavat tüüpi pildi väljastamine ImagePng() funktsiooni abil (rida 7). Iga pilditüübi jaoks on oma funktsioon, uuri lisa php manuaalist. http://ee.php.net/manual/en/ref.image.php See on alustuseks kõik. Nüüd siis lubatud funktsioon värvide töötluseks: PHP kood:
See võtab parameetriks "FFFFCC" stiilis stringe ja väljastab array, mida saab kasutada näiteks nii: PHP kood:
Eks otsustage ise, kas teil on nii mugavam. Nüüd veidi üldist juttu ka. Piltide loomine php abil võib olla kasulik mitmeti. Te võite lisada oma olemasolevale pildile suvalist teksti, võite väljastada lehekülje külastajate loenduri pildina jne. Igasuguste nupukeste loomine võib toimuda php abil, sealhulgas ka näiteks mõne tabeli ümmarguste nurkade tegemine (ImageArc() funtsioon on vihje). Loomulikult pole php abil piltide joonistamine pooltki nii mugav kui näiteks PhotoShopiga, kuid tulemus võib olla väga dünaamiline ning lõpuks on teil üks skript, mis joonistab erinevaid pilte, mitte suur hunnik pisikesi pildifaile, mida te peate iga värvitooni muutuse jaoks uuesti sellesama Photoshopiga näiteks tegema. (Asenda PhotoShop eelenenud tekstis oma lemmiku pildiloomis/töötlus programmiga.) Samm edasi võiks olla näiteks graafikute joonistamine, kui netist otsida siis võite mõne vabaltkasutatava graafikujoonistamise skripti peale sattuda. Loomulikult tuleks siis kasuks ka laiem kogemus programmeerimise alal. Ja tubli tükk matemaatikaoskust ka :). Ma ei soovita ära unustada, et ka pildifunktsioone php's saab kasutada erinevate funktsioonide ja klasside sees, olenemata sellest, et siintoodud näide oli väga lihtne. Kui on ettepanekuid, küsimusi, vigasid siin tekstis, siis andke teada: eiku@struktuur.ee. Samasse kohta võib saata ka ettepanekuid ja teemasid, millest piltide loomise/muutmise kohta veel kirjutada. Artikli kommentaarid |
|