Obsah
Nette\Image
Třída Nette\Image je určena pro základní manipulaci s obrázky. Zjednodušuje nejčastější úkony, jako je změna velikosti, doostření nebo odeslání do prohlížeče.
Image::fromFile('nette.jpg')->resize(100, 50)->send();
Vytvoření obrázku
// a) ze souboru
$image = Image::fromFile('nette.jpg');
// b) prázdný obrázek s rozměry 100x200
$image = Image::fromBlank(100, 200);
// volitelně lze určit také barvu pozadí
$image = Image::fromBlank(100, 200, Image::rgb(125, 0, 0));
Během manipulace s obrázkem je možné kdykoliv udělat jeho kopii:
$imageCopy = clone $image;
Obrázek vrací také metoda Nette\Web\HttpUploadedFile::getImage().
Zjištění velikosti
echo $image->getWidth(); // šířka
echo $image->getHeight(); // výška
Změna velikosti
Obrázek se proporcionálně zmenší tak, aby nepřesáhl rozměry 50×30 pixelů:
$image->resize(50, 30);
Je možné specifikovat jen jeden rozměr a druhý se dopočítá:
$image->resize(50, NULL);
$image->resize(NULL, 30);
Kterýkoliv rozměr je možné specifikovat i v procentech:
$image->resize('75%', 30);
V uvedených příkladech se obrázek pouze zmenšuje. Případné
zvětšení lze povolit příznakem Image::ENLARGE:
$image->resize(50, 30, Image::ENLARGE);
Přiznakem Image::STRETCH je možné aktivovat
neproporcionální změny rozměrů:
$image->resize(50, 30, Image::STRETCH);
Oba příznaky lze kombinovat:
$image->resize(50, 30, Image::ENLARGE | Image::STRETCH);
Doostření
Po zmenšení obrázku je možné vylepšit jeho vzhled jemným doostřením:
$image->sharpen();
Ořez
$image->crop($left, $top, $width, $height);
Vložení jiného obrázku
$blank = Image::fromBlank(200, 200, Image::rgb(255, 255, 255));
$blank->place($image, 0, 0);
S nastavením průhlednosti na 30 %:
$watermark = Image::fromFile('watermark.png');
$image->place($watermark, '50%', '75%', 30);
Uložení obrázku
Obrázek můžeme uložit do souboru:
$image->save('resampled.jpg');
Volitelně lze stanovit stanovit formát obrázku. (Pokud není uveden, detekuje se z přípony.):
$image->save('resampled', Image::JPEG);
Alternativně lze obrázek uložit i do proměnné:
$binary = (string) $image;
nebo poslat přímo do prohlížeče s nastavením hlavičky
Content-Type:
// odešle jako image/jpeg
$image->send();
// odešle jako image/png
$image->send(Image::PNG);
Další funkce
Nette\Image zjednodušuje volání všech grafických funkcí
PHP z rozšíření GD:
$size = 300;
$radius = 150;
$image = Image::fromBlank($size, $size);
$image->filledRectangle(0, 0, $size - 1, $size - 1, Image::rgb(255, 255, 255));
$image->rectangle(0, 0, $size - 1, $size - 1, Image::rgb(0, 0, 0));
$image->filledEllipse(100, 75, $radius, $radius, Image::rgb(255, 255, 0, 75));
$image->send(Image::GIF);
Viz také:



