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.