EN | CS | Přihlásit | Registrovat

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\HttpU­ploadedFile::ge­tImage().

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é:


Login to submit a comment