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.
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").
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] => )
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 )
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);
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");
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);
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);
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);
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);
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);
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);
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);
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.