Poznßvßnφ PHP

Prßce s obrßzky

V dneÜnφm dφle si povφme o dynamickΘm vytvß°enφ obrßzk∙ pomocφ PHP. Obrßzky najdou svΘ uplatn∞nφ p°i vytvß°enφ poΦφtadel, graf∙ a jin²ch aplikacφ, kde jim dßme p°ednost p°ed tabulkami. Op∞t si ukß₧eme jednotlivΘ funkce urΦenΘ k vytvß°enφ a manipulaci s obrßzky a toto povφdßnφ zakonΦφme p°φkladem.


Instalace

Pro prßci s obrßzky je pot°eba mφt nainstalovßnu GD knihovnu. Na platform∞ Unix je pot°eba zkompilovat PHP s volbou --with-gd, na platform∞ Windows musφme v sekci Dynamic Extensions souboru php.ini odkomentovat (odd∞lat st°ednφk) °ßdek extension=php_gd2.dll. Na zßv∞r staΦφ v souboru php.ini u volby extension_dir uvΘst cestu k adresß°i s knihovnami (nap°. "c:\php\extensions").


gd_info

Tato funkce vracφ pole obsahujφcφ informace o nainstalovanΘ GD knihovn∞.

P°φklad:


print_r(gd_info());


// V²stup funkce by mohl vypadat nßsledovn∞:
Array
(
    [GD Version] => bundled (2.0.15 compatible)
    [FreeType Support] => 1
    [FreeType Linkage] => with freetype
    [T1Lib Support] => 
    [GIF Read Support] => 1
    [GIF Create Support] => 
    [JPG Support] => 1
    [PNG Support] => 1
    [WBMP Support] => 1
    [XBM Support] => 1
    [JIS-mapped Japanese Font Support] => 
)

getimagesize

Tuto funkci uplatnφme tehdy, pokud budeme chtφt zjistit informace o zvolenΘm obrßzku jako rozm∞ry, mime typ atd.

P°φklad:


print_r(getimagesize("test.gif"));


// V²stup funkce by mohl vypadat nßsledovn∞:
Array
(
    [0] => 80
    [1] => 68
    [2] => 1
    [3] => width="80" height="68"
    [bits] => 8
    [channels] => 3
    [mime] => image/gif
)

imagecreatetruecolor

Tuto funkci budeme vyu₧φvat v₧dy p°i vytvß°enφ novΘho obrßzku. Funkce vytvo°φ podle zvolen²ch velikostφ prßzdn² Φern² obrßzek a vrßtφ odkaz, se kter²m budeme dßle pracovat.

P°φklad:


// Do prom∞nnΘ $image ulo₧φme odkaz na nov∞ vytvo°en² obrßzek.
$image = imagecreatetruecolor(200,100);


imagecreatefromgif

Obdoba funkce imagecreatetruecolor, kterß vytvo°φ nov² obrßzek zalo₧en² na zvolenΘm GIF obrßzku. M∙₧eme tak vyu₧φt ji₧ vytvo°en² obrßzek, do kterΘho dokreslφme nßmi po₧adovanΘ tvary, texty atd. Jako parametr funkce dosazujeme cestu k souboru na disku nebo takΘ URL adresu. Obdobou tΘto funkce je takΘ funkce imagecreatefrompng a imagecreatefromjpeg, kterΘ se pou₧φvajφ p°i vytvß°enφ obrßzku typu PNG a JPEG.

P°φklad:


// Do prom∞nnΘ $image ulo₧φme odkaz na nov∞ vytvo°en² obrßzek.
$image = imagecreatefromgif("test.gif");
$image = imagecreatefrompng("test.png");
$image = imagecreatefromjpeg("test.jpg");


imagecolorallocate

Alokuje barvu, kterou m∙₧eme vyu₧φt nap°φklad pro zabarvenφ textu Φi jin²ch souΦßstφ obrßzku. Funkce mß nßsledujφcφ parametry:

Jako Φφsla jednotliv²ch barev m∙₧eme dosadit takΘ hexadecimßlnφ hodnoty od 0x00 do 0xFF.

P°φklad:


// Do prom∞nnΘ $bila ulo₧φme nßmi vytvo°enou bφlou barvu.
$bila = imagecolorallocate($image, 255, 255, 255);


imageellipse

Nakreslφ elipsu podle zvolen²ch parametr∙:

Pokud chceme mφt vypln∞nou elipsu, m∙₧eme vyu₧φt funkce imagefilledellipse.

P°φklad:


// Nakreslφme bφlou elipsu na zvolen²ch sou°adnicφch.
ImageEllipse($image, 30, 40, 50, 50, $bila);


imagerectangle

Nakreslφ obdΘlnφk nebo Φtverec podle zvolen²ch parametr∙:

Pokud chceme mφt vypln∞n² obdΘlnφk Φi Φtverec, m∙₧eme vyu₧φt funkce imagefilledrectangle.

P°φklad:


// Nakreslφme bφl² Φtverec na zvolen²ch sou°adnicφch.
ImageRectangle($image, 10, 10, 50, 50, $bila);


imagefill

Pomocφ tΘto funkce m∙₧eme zm∞nit barvu pozadφ obrßzku. Jako parametry dosazujeme:

P°φklad:


// Vyplnφ pozadφ zvolenou barvou.
ImageFill($image, 0, 0, $cerna);

imagestring

Pomocφ tΘto funkce m∙₧eme do obrßzku vepsat zvolen² text podle zvolen²ch parametr∙:

P°φklad:


// VepφÜe do obrßzku text "test" na zvolenΘ pozici.
ImageString($image, 3, 10, 10, "test", $bila);


imagegif

Pomocφ tΘto funkce vepφÜeme obrßzek do prohlφ₧eΦe. Tuto funkci vyu₧ijeme jen v p°φpad∞, ₧e nßmi vytvß°en² obrßzek je typu GIF. JeÜt∞ p°ed tφm, ne₧ tuto funkci zavolßme, musφme poslat hlaviΦku "Content-type" pomocφ funkce header urΦujφcφ typ obrßzku:

Obdobou funkce ImageGIF je funkce ImagePNG a ImageJPEG, kterΘ vyu₧φvßme v zßvislosti na vytvo°enΘm typu obrßzku.

P°φklad:


// OdeÜle PNG obrßzek do prohlφ₧eΦe.
Header("Content-type: image/png");
ImagePNG($image);


imagedestroy

Uvolnφ pam∞¥ a sma₧e obrßzek. Pou₧φvß se po odeslßnφ obrßzku prohlφ₧eΦi.

P°φklad:


// ZniΦφ zvolen² obrßzek.
ImageDestroy($image);


P°φklad

Toto byl popis t∞ch nejzßkladn∞jÜφch a nejpou₧φvan∞jÜφch funkcφ pro prßci s obrßzky. Nynφ si ukß₧eme jednoduch² p°φklad.


<?
// Prohlφ₧eΦi zaÜleme hlaviΦku o typu obrßzku.
Header("Content-type: image/png");

// Vytvo°φme nov² obrßzek o velikosti 200 x 200.
$image = ImageCreateTrueColor(200, 200);

// Alokujeme si urΦitΘ barvy.
$bila = ImageColorAllocate($image, 255, 255, 255);
$cerna = ImageColorAllocate($image, 0, 0, 0);
$cervena = ImageColorAllocate($image, 255, 0, 0);

// Vyplnφme pozadφ obrßzku Φervenou barvou.
ImageFill($image, 0, 0, $cervena);

// VepφÜeme do obrßzku testovacφ text.
ImageString($image, 5, 30, 10, "Ukßzkov² text", $bila);

// Nakreslφme Φtverec.
ImageFilledRectangle($image, 30, 30, 60, 60, $bila);

// Nakreslφme elipsu.
ImageFilledEllipse($image, 45, 100, 30, 30, $bila);

// Vytvo°φme obrßzek.
ImagePNG($image);

// ZniΦφme obrßzek.
ImageDestroy($image);
?>

Pro tento dφl to bude vÜe. V p°φÜtφm dφle budeme dßle pokraΦovat v poznßvßnφ jazyka PHP.

Petr Rympler