Home > PHP-tecaj > PHP tecaj: treca lekcija

PHP tecaj: treca lekcija

Prosinac 25th, 2008

Obrada slika

Paznja:

U PHP postoji naredba ImageGif().

Uz pomoc ove naredbe mozemo “napraviti” neku GIF-slicicu.

Za to su nam jos potrebne funkcije sadrzane u slobodno dostupnoj (free) biblioteci gd.

Firma Unisys ima patent-prava za LZW komprimiranje podataka, koje se, izmedju ostalog, primjenjuje i kod pravljenja “GIF-slicica“.

Posto firma UNISYS zabranjuje pravnim putem upotrebu ovog LZW komprimiranja, u novijim verzijama gd biblioteke nije vise moguce praviti GIF-slicice.

Tako da je kao rezultat svega ovoga : PHP naredba ImageGif() se ne moze vise koristiti !!

Vjerovatno se sada pitate : “Zasto da citam nesto sto se vise ne koristi?”. Odgovor je jednostavan, koriscenje funkcije koja plaze .jpg slike je gotovo identicna.

Osim toga nove funkcije se dodaju gotovo dnevno, i u svakom slucaju cete redovno morati (ili zeljeti?) da upoznate najnovije funkcije koje olaksavaju i omogucuju rad sa PHP-om.

PHP se ne koristi samo za stvaranje HTML teksta, isto tako je moguce dinamicko pravljenje slika. Npr. mogli bi poloziti jedan fajl pod imenom slika.php3 , cijim bi pozivom dobili sliku.

Ovaj fajl ne bi sadzavao HTML, u njemu bi stajale iskljucivo PHP – naredbe.

ISKLJUCIVO znaci isto tako da prije prve <? naredbe ne smije stajati nista (bas nista, cak ni prazno mjesto ili red !!).

U suprotnom slucaju bi “browser” ocekivao nekakav tekstualni dokument. ( A browser ne smijemo razocarati ;) .

Slijedi PRIMJER:
<?

Header( “Content-type: image/gif”);

$slicica = imagecreate(200,100);

$plava = ImageColorAllocate($slicica, 0x2c,0x6D,0xAF);

ImageFilledRectangle($im,0,0,200,100,$plava);

ImageGif($slicica);

ImageDestroy($slicica);

?>
Ako pozovemo ovaj fajl, dobicemo jedan plavi pravougaonik.

Naravno, koristeci:

<IMG SRC=”slika.php3″>

mozemo povezati ovaj pravougaonik u nekoj HTML stranici.

Sta postizemo gore navedenim naredbama?

Naredba:

Header( “Content-type: image/gif”);

najavljuje browser-u da je ono sto slijedi jedna GIF-slicica.(Ako zelimo sprijeciti javljanje greske mozemo privremeno ovaj red “izbaciti iz upotrebe” ostavljajuci ga kao komentar stavljanjem znaka # na pocetak reda.)

Naredba:

$slicica = imagecreate(200,100);

pravi jednu slicicu koja je 200 px (piksli) siroka i 100 px visoka.

Svaka boja mora biti prije same upotrebe “stvorena” tj. odredjena. Ovo postizemo naredbom:

$plava = ImageColorAllocate($im, 0x2c,0x6D,0xAF);

ovdje je $slicica slika za koju odredjujemo farbu, ostala tri parametra predstavljaju hexadecimalne RGB-vrijednosti. (Obrati paznju na sintaksu: 0x2c odgovara decimalnom udjelu udio crvene boje od 36).

Sa:

ImageFilledRectangle($slicica,0,0,200,100,$plava);

nacrtacemo jedan popunjeni pravougaonik , koji pocinje u lijevom gornjem uglu (0,0), i zavrsava 200 px desno i 100 px dole. Naravno, ispunjen je sa prije odredjenom ( u promjenjljivoj $plava) plavom bojom.

Naredba:

ImageGif($slicica);

znaci: najprije pravi jednu GIF-slicicu na osnovu “unutrasnjeg predstavljanja” i onda je posalji nazad posmatracu, dok

ImageDestroy($slicica);

oslobadja interno zauzeto mjesto za memorisanje.

Postoji citav niz mogucnosti za pravljenje slika. Npr. mozemo upisati neki tekst u slicicu koju stvaramo:

$bijela = ImageColorAllocate($slicica, 255,255,255);

imagestring($slicica, 5, 20, 20, “Vozdra”, $bijela);

Uz pomoc prve naredbe definisemo bijelu boju. (Ovdje se jos da primjetiti da smo bijelu boju odredili sa decimalnim vrijednostima – 3 x 255) .

Drugom naredbom postizemo upisivanje teksta ” Vozdra ” velicine 5 koji pocinje na mjestu 20,20 ( 20 px desno i 20 dole).

Obje naredbe treba da stoje direktno ispred naredbe

ImageGif($slicica) .

Vise informacija o pravljenju slicica je sadrzano u PHP-prirucniku (PHP- Handbuch) na njemackom jeziku doduse.

Osim pravougaonika moguce je “crtati” i ostale uobicajene elemente kao sto su krugovi, elipse, poligoni, lukovi itd.

U ovom tutorijalu tema za sad nece biti sire obrazlagana.

Popularity: 7% [?]

PHP-tecaj ,

  1. Trenutno nema komentara.
  1. No trackbacks yet.