Obrázky
Úvod
- Pomocí knihovny GD pro PHP lze vytvářet a upravovat obrázky
- Je potřeba mít PHP zkompilované s touto knihovnou
- Podpora JPEG, PNG, GIF, XBM, XPM, WBMP, WebP, BMP
Vytvoření obrázku ze souboru
- Funkce
imagecreatefrom*podle typu obrázku (např.imagecreatefrompng)- Vrací instanci třídy
GdImage(dokumentace), kterou používáme v dalších funkcích. - Argument je jméno souboru, ze kterého chceme obrázek vytvořit
- Vrací instanci třídy
$image = imagecreatefrompng('image.png');Vytvoření nového obrázku
- Funkce
imagecreatetruecolor- Argumenty jsou požadovaná šířka a výška
- Vrací instanci třídy
GdImage, který reprezentuje černý obrázek daných rozměrů
$image = imagecreatetruecolor(500, 400);Uložení obrázku
- Funkce
image*podle typu obrázku (např.imagepng)- První argument je instance třídy
GdImage - Druhý argument je soubor, kam se má obrázek uložit
- Pokud je druhý argument NULL, obrázek se vypíše přímo na výstup
- První argument je instance třídy
imagepng($image, 'image.png'); // uloží obrázek do souboru image.png
imagepng($image); // vypíše obrázek přímo na výstupUvolnění paměti
- Pomocí funkce
imagedestroyuvolníme veškerou paměť spojenou s daným obrázkem - Od PHP verze 8.0, tato funkce nic nedělá (uvolnění zdrojů je řešeno v rámci třídy GdImage automaticky).
- Vhodné ponechat v kódu, který má být kompatibilní se staršími verzemi PHP.
$image = imagecreatefrompng('image.png');
// ...
imagedestroy($image);Informace o obrázku
- Můžeme zjišťovat různé informace o obrázku
- Např. šířku a výšku pomocí funkcí
imagesxaimagesy
- Např. šířku a výšku pomocí funkcí
$img = imagecreatetruecolor(300, 200);
echo imagesx($img); // 300
echo imagesy($img); // 200Úpravy obrázků
- PHP obsahuje celou řadu funkcí pro různé úpravy obrázků, naleznete v dokumentaci
- Např. funkce
imagecroppro oříznutí obrázku- Původní obrázek zůstává nezměněn, funkce vytvoří nový
$im = imagecreatefrompng('example.png');
$im2 = imagecrop($im, ['x' => 0, 'y' => 0, 'width' => 200, 'height' => 100]);
if ($im2 !== FALSE) {
imagepng($im2, 'example-cropped.png');
}- Např. funkce
imagefilterpro aplikaci vybraného filtru na obrázek- Medota přijímá různý počet argumentů v závislosti na typu filtru
$im = imagecreatefrompng('example.png');
$success = imagefilter($im, IMG_FILTER_BRIGHTNESS, 20);
if ($success !== FALSE) {
imagepng($im, 'example-filter.png');
}Kreslení
- Obrázky nemusíme jen upravovat, ale můžeme je i vytvářet
- Alokace barvy pomocí funkce
imagecolorallocate - Kreslení různých tvarů např.
imagerectangle,imageellipse,imagepolygon - Další funkce pro kreslení naleznete v dokumentaci
- Alokace barvy pomocí funkce
// Vytvoření obrázku
$image = imagecreatetruecolor(300, 200);
// Alokace barvy
$red = imagecolorallocate($image, 255, 0, 0);
// Vykreslení obdélníku
imagerectangle($image, 50, 50, 150, 150, $red);Texty
- Vykreslení pomocí build-in fontů funkcemi imagestring nebo imagestringup
- Vykreslení s použitím TrueType fontů funkcí imagettftext