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ýstup
Uvolnění paměti
- Pomocí funkce
imagedestroy
uvolní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í
imagesx
aimagesy
- 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
imagecrop
pro 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
imagefilter
pro 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