Jdi na navigaci předmětu

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
$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
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 a imagesy
$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
// 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