Nette Documentation Preview

syntax
Praca z obrazami
****************

.[perex]
Klasa [api:Nette\Utils\Image] upraszcza manipulowanie obrazami, na przykład zmianę rozmiaru, kadrowanie, wyostrzanie, rysowanie czy łączenie kilku obrazów.


PHP ma obszerny zestaw funkcji do manipulowania obrazami. Ich API nie jest jednak zbyt przyjazne. To nie byłby Nette Framework, gdyby nie przyszedł z rozkosznym API.

Instalacja:

```shell
composer require nette/utils
```

Poniższe przykłady zakładają, że zdefiniowany jest następujący alias klasy:

```php
use Nette\Utils\Image;
use Nette\Utils\ImageColor;
use Nette\Utils\ImageType;
```


Tworzenie obrazu
================

Utwórz nowy obraz truecolor, na przykład o wymiarach 100×200:

```php
$image = Image::fromBlank(100, 200);
```

Opcjonalnie możesz podać kolor tła (domyślnie jest czarny):

```php
$image = Image::fromBlank(100, 200, ImageColor::rgb(125, 0, 0));
```

Albo wczytaj obraz z pliku:

```php
$image = Image::fromFile('nette.jpg');
```


Zapis obrazu
============

Obraz można zapisać do pliku:

```php
$image->save('resampled.jpg');
```

Możesz podać jakość kompresji z zakresu 0-100 dla JPEG (domyślnie 85), WEBP (domyślnie 80) i AVIF (domyślnie 30) oraz 0-9 dla PNG (domyślnie 9):

```php
$image->save('resampled.jpg', 80); // JPEG, jakość 80%
```

Jeśli format nie wynika jednoznacznie z rozszerzenia pliku, można go podać za pomocą [stałej |#Formaty]:

```php
$image->save('resampled.tmp', null, ImageType::JPEG);
```

Zamiast zapisu na dysk obraz można zapisać do zmiennej:

```php
$data = $image->toString(ImageType::JPEG, 80); // JPEG, jakość 80%
```

albo wysłać bezpośrednio do przeglądarki wraz z odpowiednim nagłówkiem HTTP `Content-Type`:

```php
// wysyła nagłówek Content-Type: image/png
$image->send(ImageType::PNG);
```


Formaty
=======

Obsługiwane formaty to JPEG, PNG, GIF, WebP, AVIF i BMP. Twoja wersja PHP musi je jednak również obsługiwać, co sprawdzisz funkcją [#isTypeSupported()]. Animacje nie są obsługiwane.

Formaty reprezentowane są przez stałe `ImageType::JPEG`, `ImageType::PNG`, `ImageType::GIF`, `ImageType::WEBP`, `ImageType::AVIF` i `ImageType::BMP`.

```php
$supported = Image::isTypeSupported(ImageType::JPEG);
```

Potrzebujesz wykryć format obrazu przy wczytywaniu? Metoda zwraca go w drugim parametrze:

```php
$image = Image::fromFile('nette.jpg', $type);
```

Wykrycie bez wczytywania samego obrazu umożliwia `Image::detectTypeFromFile()`.


Zmiana rozmiaru
===============

Częstą operacją jest zmiana rozmiaru obrazu. Bieżące wymiary zwracają metody `getWidth()` i `getHeight()`.

Do zmiany rozmiaru służy metoda `resize()`. Przykład proporcjonalnej zmiany rozmiaru tak, aby obraz nie przekroczył 500x300 pikseli (albo szerokość będzie dokładnie 500px, albo wysokość dokładnie 300px; drugi wymiar obliczany jest tak, aby zachować proporcje):

```php
$image->resize(500, 300);
```

Można podać tylko jeden wymiar, a drugi zostanie obliczony automatycznie:

```php
$image->resize(500, null); // szerokość 500px, wysokość obliczana automatycznie

$image->resize(null, 300); // szerokość obliczana automatycznie, wysokość 300px
```

Każdy z wymiarów można podać także w procentach:

```php
$image->resize('75%', 300); // 75 % × 300px
```

Na zachowanie `resize()` można wpłynąć poniższymi flagami. Wszystkie flagi z wyjątkiem `Image::Stretch` zachowują proporcje.

|---------------------------------------------------------------------------------------
| Flaga                 | Opis
|---------------------------------------------------------------------------------------
| `Image::OrSmaller` (domyślna) | wynikowe wymiary będą mniejsze lub równe żądanym
| `Image::OrBigger`         | wypełnia obszar docelowy (i ewentualnie przekracza go w jednym wymiarze)
| `Image::Cover`            | wypełnia obszar docelowy i przycina wszystko, co go przekracza
| `Image::ShrinkOnly`       | tylko zmniejsza (zapobiega rozciąganiu małego obrazu)
| `Image::Stretch`          | nie zachowuje proporcji


Flagi przekazuje się jako trzeci argument metody:

```php
$image->resize(500, 300, Image::OrBigger);
```

Flagi można łączyć:

```php
$image->resize(500, 300, Image::ShrinkOnly | Image::Stretch);
```

Obrazy można odbić w pionie albo w poziomie, podając jeden z wymiarów (albo oba) jako liczbę ujemną:

```php
$flipped = $image->resize(null, '-100%'); // odbicie w pionie

$flipped = $image->resize('-100%', '-100%'); // obrót o 180°

$flipped = $image->resize(-125, 500); // zmiana rozmiaru i odbicie w poziomie
```

Po zmianie rozmiaru obrazu możesz poprawić jego wygląd delikatnym wyostrzeniem:

```php
$image->sharpen();
```


Kadrowanie
==========

Do kadrowania służy metoda `crop()`:

```php
$image->crop($left, $top, $width, $height);
```

Podobnie jak przy `resize()`, wszystkie wartości można podać w procentach. Procenty dla `$left` i `$top` liczone są z pozostałej przestrzeni, podobnie jak przy właściwości CSS `background-position`:

```php
$image->crop('100%', '50%', '80%', '80%');
```

[* crop.svg *]


Obraz można też skadrować automatycznie, na przykład aby usunąć czarne obramowanie:

```php
$image->cropAuto(IMG_CROP_BLACK);
```

Metoda `cropAuto()` to obiektowy wrapper funkcji `imagecropauto()`; więcej informacji znajdziesz w [jej dokumentacji|https://www.php.net/manual/en/function.imagecropauto].


Kolory .{data-version:4.0.2}
============================

Metoda `ImageColor::rgb()` pozwala zdefiniować kolor za pomocą wartości czerwonej, zielonej i niebieskiej (RGB). Opcjonalnie możesz podać także wartość przezroczystości z zakresu od 0 (całkowicie przezroczysty) do 1 (całkowicie nieprzezroczysty), tak jak w CSS.

```php
$color = ImageColor::rgb(255, 0, 0); // czerwony
$transparentBlue = ImageColor::rgb(0, 0, 255, 0.5); // półprzezroczysty niebieski
```

Metoda `ImageColor::hex()` pozwala zdefiniować kolor w formacie szesnastkowym, podobnie jak w CSS. Obsługuje formaty `#rgb`, `#rrggbb`, `#rgba` i `#rrggbbaa`:

```php
$color = ImageColor::hex("#F00"); // czerwony
$transparentGreen = ImageColor::hex("#00FF0080"); // półprzezroczysty zielony
```

Kolorów można używać w innych metodach, takich jak `ellipse()`, `fill()` itd.


Rysowanie i edycja
==================

Masz do dyspozycji wszystkie funkcje PHP do manipulowania obrazami, zobacz [#Przegląd metod], ale opakowane w styl obiektowy:

```php
$image->filledEllipse($centerX, $centerY, $width, $height, ImageColor::rgb(255, 0, 0));
```

Ponieważ natywne funkcje PHP do rysowania prostokątów są nieco niepraktyczne przez sposób podawania współrzędnych, klasa `Image` oferuje zamienniki: [#rectangleWH()] i [#filledRectangleWH()].


Łączenie kilku obrazów
======================

Na bieżący obraz łatwo umieścisz inny obraz:

```php
$logo = Image::fromFile('logo.png');
$blank = Image::fromBlank(320, 240, ImageColor::rgb(52, 132, 210));

// współrzędne można podać także w procentach
$blank->place($logo, '80%', '80%'); // umieszcza w pobliżu prawego dolnego rogu
```

Przy umieszczaniu respektowany jest kanał alfa. Ponadto możesz wpłynąć na przezroczystość umieszczanego obrazu (tworząc znak wodny):

```php
$blank->place($image, '80%', '80%', 25); // przezroczystość wynosi 25%
```

Używanie takiego API to prawdziwa przyjemność!


Przegląd metod
==============


static fromBlank(int $width, int $height, ?ImageColor $color=null): Image .[method]
-----------------------------------------------------------------------------------
Tworzy nowy obraz truecolor o podanych wymiarach. Domyślnym kolorem jest czarny.


static fromFile(string $file, int &$detectedFormat=null, string &$warnings=null): Image .[method]
-------------------------------------------------------------------------------------------------
Wczytuje obraz z pliku i zwraca jego [typ |#Formaty] w `$detectedFormat`. Jeśli przekażesz `$warnings`, wszelkie niekrytyczne ostrzeżenia dekodera obrazu zostaną w nim zapisane, zamiast zostać zgłoszone jako ostrzeżenie PHP; pozostaje `null`, gdy żadnych nie ma.


static fromString(string $s, int &$detectedFormat=null, string &$warnings=null): Image .[method]
------------------------------------------------------------------------------------------------
Wczytuje obraz ze stringa i zwraca jego [typ |#Formaty] w `$detectedFormat`. Jeśli przekażesz `$warnings`, wszelkie niekrytyczne ostrzeżenia dekodera obrazu zostaną w nim zapisane, zamiast zostać zgłoszone jako ostrzeżenie PHP; pozostaje `null`, gdy żadnych nie ma.


static rgb(int $red, int $green, int $blue, int $transparency=0): array .[method][deprecated]
---------------------------------------------------------------------------------------------
Tę funkcję zastąpiła klasa `ImageColor`, zobacz [#Kolory].


static typeToExtension(int $type): string .[method]
---------------------------------------------------
Zwraca rozszerzenie pliku dla podanego [typu |#Formaty].


static typeToMimeType(int $type): string .[method]
--------------------------------------------------
Zwraca typ MIME dla podanego [typu |#Formaty].


static extensionToType(string $extension): int .[method]
--------------------------------------------------------
Zwraca [typ |#Formaty] obrazu na podstawie rozszerzenia pliku.


static detectTypeFromFile(string $file, int &$width=null, int &$height=null): ?int .[method]
--------------------------------------------------------------------------------------------
Zwraca [typ |#Formaty] pliku obrazu, a w parametrach `$width` i `$height` również jego wymiary.


static detectTypeFromString(string $s, int &$width=null, int &$height=null): ?int .[method]
-------------------------------------------------------------------------------------------
Zwraca [typ |#Formaty] obrazu ze stringa, a w parametrach `$width` i `$height` również jego wymiary.


static isTypeSupported(int $type): bool .[method]
-------------------------------------------------
Sprawdza, czy podany [typ |#Formaty] obrazu jest obsługiwany.


static getSupportedTypes(): array .[method]{data-version:4.0.4}
---------------------------------------------------------------
Zwraca tablicę obsługiwanych [typów |#Formaty] obrazów.


static calculateTextBox(string $text, string $fontFile, float $size, float $angle=0, array $options=[]): array .[method]
------------------------------------------------------------------------------------------------------------------------
Oblicza wymiary prostokąta otaczającego tekst w określonym foncie i rozmiarze. Zwraca tablicę asocjacyjną zawierającą klucze `left`, `top`, `width`, `height`. Lewy margines może być ujemny, jeśli tekst zaczyna się lewym nawisem kerningu.


affine(array $affine, ?array $clip=null): Image .[method]
---------------------------------------------------------
Zwraca obraz zawierający przekształcony afinicznie obraz źródłowy, z opcjonalnym obszarem przycięcia. ([więcej |https://www.php.net/manual/en/function.imageaffine]).


alphaBlending(bool $on): void .[method]
---------------------------------------
Umożliwia dwa różne tryby rysowania na obrazach truecolor. W trybie mieszania składowa kanału alfa koloru podanego wszystkim funkcjom rysującym, takim jak `setPixel()`, decyduje o tym, ile leżącego pod spodem koloru ma prześwitywać. W efekcie automatycznie miesza istniejący w tym punkcie kolor z kolorem rysowania i zapisuje wynik w obrazie. Wynikowy piksel jest nieprzezroczysty. W trybie bez mieszania kolor rysowania kopiowany jest dosłownie, wraz z informacją o kanale alfa, i zastępuje piksel docelowy. Tryb mieszania nie jest dostępny przy rysowaniu na obrazach paletowych. ([więcej |https://www.php.net/manual/en/function.imagealphablending])


antialias(bool $on): void .[method]
-----------------------------------
Włącza szybkie metody antyaliasowanego rysowania linii i wielokątów szkieletowych. Nie obsługuje składowych alfa. Działa przez bezpośrednią operację mieszania. Działa wyłącznie z obrazami truecolor.

Używanie prymitywów z antyaliasingiem przy przezroczystym kolorze tła może dać nieoczekiwane wyniki. Metoda mieszania traktuje kolor tła jak każdy inny kolor. Brak obsługi składowej alfa nie pozwala na metodę antyaliasingu opartą na alfie. ([więcej |https://www.php.net/manual/en/function.imageantialias])


arc(int $centerX, int $centerY, int $width, int $height, int $startAngle, int $endAngle, ImageColor $color): void .[method]
---------------------------------------------------------------------------------------------------------------------------
Rysuje łuk okręgu o środku w podanych współrzędnych. ([więcej |https://www.php.net/manual/en/function.imagearc])


colorAllocate(int $red, int $green, int $blue): int .[method]
-------------------------------------------------------------
Zwraca identyfikator koloru reprezentujący kolor złożony z podanych składowych RGB. Musi zostać wywołana, aby utworzyć każdy kolor, który ma być użyty w obrazie. ([więcej |https://www.php.net/manual/en/function.imagecolorallocate])


colorAllocateAlpha(int $red, int $green, int $blue, int $alpha): int .[method]
------------------------------------------------------------------------------
Zachowuje się identycznie jak `colorAllocate()`, z dodatkiem parametru przezroczystości `$alpha`. ([więcej |https://www.php.net/manual/en/function.imagecolorallocatealpha])


colorAt(int $x, int $y): int .[method]
--------------------------------------
Zwraca indeks koloru piksela w podanym miejscu obrazu. Jeśli obraz jest typu truecolor, funkcja zwraca wartość RGB tego piksela jako liczbę całkowitą. Aby sięgnąć po poszczególne składowe czerwoną, zieloną i niebieską, użyj przesunięć bitowych i maskowania: ([więcej |https://www.php.net/manual/en/function.imagecolorat])


colorClosest(int $red, int $green, int $blue): int .[method]
------------------------------------------------------------
Zwraca indeks koloru w palecie obrazu, który jest "najbliższy" podanej wartości RGB. "Odległość" między pożądanym kolorem a każdym kolorem palety obliczana jest tak, jakby wartości RGB reprezentowały punkty w przestrzeni trójwymiarowej. ([więcej |https://www.php.net/manual/en/function.imagecolorclosest])


colorClosestAlpha(int $red, int $green, int $blue, int $alpha): int .[method]
-----------------------------------------------------------------------------
Zwraca indeks koloru w palecie obrazu, który jest "najbliższy" podanej wartości RGB i poziomowi `$alpha`. ([więcej |https://www.php.net/manual/en/function.imagecolorclosestalpha])


colorClosestHWB(int $red, int $green, int $blue): int .[method]
---------------------------------------------------------------
Zwraca indeks koloru o odcieniu, bieli i czerni najbliższych podanemu kolorowi. ([więcej |https://www.php.net/manual/en/function.imagecolorclosesthwb])


colorDeallocate(int $color): void .[method]
-------------------------------------------
Zwalnia kolor przydzielony wcześniej przez `colorAllocate()` albo `colorAllocateAlpha()`. ([więcej |https://www.php.net/manual/en/function.imagecolordeallocate])


colorExact(int $red, int $green, int $blue): int .[method]
----------------------------------------------------------
Zwraca indeks podanego koloru w palecie obrazu. ([więcej |https://www.php.net/manual/en/function.imagecolorexact])


colorExactAlpha(int $red, int $green, int $blue, int $alpha): int .[method]
---------------------------------------------------------------------------
Zwraca indeks podanego koloru wraz z alfą w palecie obrazu. ([więcej |https://www.php.net/manual/en/function.imagecolorexactalpha])


colorMatch(Image $image2): void .[method]
-----------------------------------------
Sprawia, że kolory paletowej wersji obrazu bardziej odpowiadają wersji truecolor. ([więcej |https://www.php.net/manual/en/function.imagecolormatch])


colorResolve(int $red, int $green, int $blue): int .[method]
------------------------------------------------------------
Zwraca indeks koloru dla żądanego koloru, albo dokładnego, albo najbliższej możliwej alternatywy. ([więcej |https://www.php.net/manual/en/function.imagecolorresolve])


colorResolveAlpha(int $red, int $green, int $blue, int $alpha): int .[method]
-----------------------------------------------------------------------------
Zwraca indeks koloru dla żądanego koloru, albo dokładnego, albo najbliższej możliwej alternatywy. ([więcej |https://www.php.net/manual/en/function.imagecolorresolvealpha])


colorSet(int $index, int $red, int $green, int $blue, int $alpha=0): void .[method]
-----------------------------------------------------------------------------------
Ustawia podany indeks palety na podany kolor. ([więcej |https://www.php.net/manual/en/function.imagecolorset])


colorsForIndex(int $index): array .[method]
-------------------------------------------
Zwraca kolor dla podanego indeksu. ([więcej |https://www.php.net/manual/en/function.imagecolorsforindex])


colorsTotal(): int .[method]
----------------------------
Zwraca liczbę kolorów w palecie obrazu. ([więcej |https://www.php.net/manual/en/function.imagecolorstotal])


colorTransparent(?int $color=null): int .[method]
-------------------------------------------------
Pobiera albo ustawia kolor przezroczysty w obrazie. ([więcej |https://www.php.net/manual/en/function.imagecolortransparent])


convolution(array $matrix, float $div, float $offset): void .[method]
---------------------------------------------------------------------
Stosuje do obrazu macierz splotu, używając podanego współczynnika i przesunięcia. ([więcej |https://www.php.net/manual/en/function.imageconvolution])

.[note]
Wymaga *Bundled GD extension*, więc może nie działać wszędzie.


copy(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH): void .[method]
--------------------------------------------------------------------------------------------------
Kopiuje część `$src` na obraz, zaczynając od współrzędnych `$srcX`, `$srcY`, o szerokości `$srcW` i wysokości `$srcH`. Zdefiniowany fragment zostanie skopiowany na współrzędne `$dstX` i `$dstY`. ([więcej |https://www.php.net/manual/en/function.imagecopy])


copyMerge(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH, int $opacity): void .[method]
---------------------------------------------------------------------------------------------------------------------
Kopiuje część `$src` na obraz, zaczynając od współrzędnych `$srcX`, `$srcY`, o szerokości `$srcW` i wysokości `$srcH`. Zdefiniowany fragment zostanie skopiowany na współrzędne `$dstX` i `$dstY`. ([więcej |https://www.php.net/manual/en/function.imagecopymerge])


copyMergeGray(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH, int $opacity): void .[method]
-------------------------------------------------------------------------------------------------------------------------
Kopiuje część `$src` na obraz, zaczynając od współrzędnych `$srcX`, `$srcY`, o szerokości `$srcW` i wysokości `$srcH`. Zdefiniowany fragment zostanie skopiowany na współrzędne `$dstX` i `$dstY`.

Funkcja ta jest identyczna z `copyMerge()`, z tą różnicą, że przy łączeniu zachowuje odcień źródła, konwertując przed operacją kopiowania piksele docelowe do skali szarości. ([więcej |https://www.php.net/manual/en/function.imagecopymergegray])


copyResampled(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $dstW, int $dstH, int $srcW, int $srcH): void .[method]
---------------------------------------------------------------------------------------------------------------------------------
Kopiuje prostokątny fragment jednego obrazu do drugiego, płynnie interpolując wartości pikseli, dzięki czemu zwłaszcza zmniejszenie rozmiaru obrazu nadal zachowuje sporo ostrości.

Innymi słowy, `copyResampled()` weźmie z `$src` prostokątny obszar o szerokości `$srcW` i wysokości `$srcH` na pozycji (`$srcX`,`$srcY`) i umieści go w prostokątnym obszarze obrazu o szerokości `$dstW` i wysokości `$dstH` na pozycji (`$dstX`,`$dstY`).

Jeśli współrzędne oraz szerokości i wysokości źródła i celu się różnią, fragment obrazu zostanie odpowiednio rozciągnięty albo zmniejszony. Współrzędne odnoszą się do lewego górnego rogu. Funkcji można użyć do kopiowania obszarów w obrębie tego samego obrazu, ale jeśli obszary się nakładają, wyniki będą nieprzewidywalne. ([więcej |https://www.php.net/manual/en/function.imagecopyresampled])


copyResized(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $dstW, int $dstH, int $srcW, int $srcH): void .[method]
-------------------------------------------------------------------------------------------------------------------------------
Kopiuje prostokątny fragment jednego obrazu do drugiego. Innymi słowy, `copyResized()` weźmie z `$src` prostokątny obszar o szerokości `$srcW` i wysokości `$srcH` na pozycji (`$srcX`,`$srcY`) i umieści go w prostokątnym obszarze obrazu o szerokości `$dstW` i wysokości `$dstH` na pozycji (`$dstX`,`$dstY`).

Jeśli współrzędne oraz szerokości i wysokości źródła i celu się różnią, fragment obrazu zostanie odpowiednio rozciągnięty albo zmniejszony. Współrzędne odnoszą się do lewego górnego rogu. Funkcji można użyć do kopiowania obszarów w obrębie tego samego obrazu, ale jeśli obszary się nakładają, wyniki będą nieprzewidywalne. ([więcej |https://www.php.net/manual/en/function.imagecopyresized])


crop(int|string $left, int|string $top, int|string $width, int|string $height): Image .[method]
-----------------------------------------------------------------------------------------------
Kadruje obraz do podanego obszaru prostokątnego. Wymiary można podać jako liczby całkowite w pikselach albo jako stringi w procentach (np. `'50%'`).


cropAuto(int $mode=0, float $threshold=.5, ?ImageColor $color=null): Image .[method]
------------------------------------------------------------------------------------
Automatycznie kadruje obraz zgodnie z podanym `$mode`. ([więcej |https://www.php.net/manual/en/function.imagecropauto])


ellipse(int $centerX, int $centerY, int $width, int $height, ImageColor $color): void .[method]
-----------------------------------------------------------------------------------------------
Rysuje elipsę o środku w podanych współrzędnych. ([więcej |https://www.php.net/manual/en/function.imageellipse])


fill(int $x, int $y, ImageColor $color): void .[method]
-------------------------------------------------------
Wykonuje wypełnienie powodziowe, zaczynając od podanych współrzędnych (lewy górny róg to 0, 0), kolorem `$color`. ([więcej |https://www.php.net/manual/en/function.imagefill])


filledArc(int $centerX, int $centerY, int $width, int $height, int $startAngle, int $endAngle, ImageColor $color, int $style): void .[method]
---------------------------------------------------------------------------------------------------------------------------------------------
Rysuje wycinek łuku o środku w podanych współrzędnych. ([więcej |https://www.php.net/manual/en/function.imagefilledarc])


filledEllipse(int $centerX, int $centerY, int $width, int $height, ImageColor $color): void .[method]
-----------------------------------------------------------------------------------------------------
Rysuje elipsę o środku w podanych współrzędnych. ([więcej |https://www.php.net/manual/en/function.imagefilledellipse])


filledPolygon(array $points, ImageColor $color): void .[method]
---------------------------------------------------------------
Tworzy w obrazie wypełniony wielokąt. ([więcej |https://www.php.net/manual/en/function.imagefilledpolygon])


filledRectangle(int $x1, int $y1, int $x2, int $y2, ImageColor $color): void .[method]
--------------------------------------------------------------------------------------
Tworzy w obrazie prostokąt wypełniony kolorem `$color`, zaczynający się w punkcie (`$x1`, `$y1`) i kończący w (`$x2`, `$y2`). Punkt (0, 0) to lewy górny róg obrazu. ([więcej |https://www.php.net/manual/en/function.imagefilledrectangle])


filledRectangleWH(int $x, int $y, int $width, int $height, ImageColor $color): void .[method]
---------------------------------------------------------------------------------------------
Tworzy w obrazie prostokąt wypełniony kolorem `$color`, zaczynający się w punkcie (`$x`, `$y`), o szerokości `$width` i wysokości `$height`. Punkt (0, 0) to lewy górny róg obrazu.


fillToBorder(int $x, int $y, ImageColor $borderColor, ImageColor $color): void .[method]
----------------------------------------------------------------------------------------
Wykonuje wypełnienie powodziowe, którego kolor granicy określa `$borderColor`. Punktem startowym wypełnienia jest (`$x`, `$y`) (lewy górny róg to 0, 0), a obszar wypełniany jest kolorem `$color`. ([więcej |https://www.php.net/manual/en/function.imagefilltoborder])


filter(int $filtertype, int ...$args): void .[method]
-----------------------------------------------------
Stosuje do obrazu podany filtr `$filtertype`. ([więcej |https://www.php.net/manual/en/function.imagefilter])


flip(int $mode): void .[method]
-------------------------------
Odbija obraz zgodnie z podanym `$mode`. ([więcej |https://www.php.net/manual/en/function.imageflip])


ftText(float $size, float $angle, int $x, int $y, ImageColor $color, string $fontFile, string $text, array $options=[]): array .[method]
----------------------------------------------------------------------------------------------------------------------------------------
Zapisuje tekst do obrazu. ([więcej |https://www.php.net/manual/en/function.imagefttext])


gammaCorrect(float $inputgamma, float $outputgamma): void .[method]
-------------------------------------------------------------------
Stosuje do obrazu korekcję gamma na podstawie gammy wejściowej i wyjściowej. ([więcej |https://www.php.net/manual/en/function.imagegammacorrect])


getClip(): array .[method]
--------------------------
Pobiera bieżący prostokąt przycięcia, czyli obszar, poza którym nie będą rysowane żadne piksele. ([więcej |https://www.php.net/manual/en/function.imagegetclip])


getHeight(): int .[method]
--------------------------
Zwraca wysokość obrazu.


getImageResource(): GdImage .[method]
-------------------------------------
Zwraca leżący u podstaw zasób obrazu GD.


getWidth(): int .[method]
-------------------------
Zwraca szerokość obrazu.


interlace(?int $interlace=null): int .[method]
----------------------------------------------
Włącza albo wyłącza przeplot. Jeśli przeplot jest włączony, a obraz zapisywany jest jako JPEG, zostanie zapisany jako progresywny JPEG. ([więcej |https://www.php.net/manual/en/function.imageinterlace])


isTrueColor(): bool .[method]
-----------------------------
Sprawdza, czy obraz jest typu truecolor. ([więcej |https://www.php.net/manual/en/function.imageistruecolor])


layerEffect(int $effect): void .[method]
----------------------------------------
Ustawia flagę mieszania alfa, aby używać efektów warstwowych. ([więcej |https://www.php.net/manual/en/function.imagelayereffect])


line(int $x1, int $y1, int $x2, int $y2, ImageColor $color): void .[method]
---------------------------------------------------------------------------
Rysuje linię między dwoma podanymi punktami. ([więcej |https://www.php.net/manual/en/function.imageline])


openPolygon(array $points, ImageColor $color): void .[method]
-------------------------------------------------------------
Rysuje w obrazie otwarty wielokąt. W odróżnieniu od `polygon()` nie rysuje linii między ostatnim a pierwszym punktem. ([więcej |https://www.php.net/manual/en/function.imageopenpolygon])


paletteCopy(Image $source): void .[method]
------------------------------------------
Kopiuje paletę z `$source` do obrazu. ([więcej |https://www.php.net/manual/en/function.imagepalettecopy])


paletteToTrueColor(): void .[method]
------------------------------------
Konwertuje obraz paletowy na obraz truecolor. ([więcej |https://www.php.net/manual/en/function.imagepalettetotruecolor])


place(Image $image, int|string $left=0, int|string $top=0, int $opacity=100): Image .[method]
---------------------------------------------------------------------------------------------
Kopiuje `$image` na bieżący obraz na współrzędnych (`$left`, `$top`). Współrzędne można podać jako liczby całkowite w pikselach albo jako stringi w procentach (np. `'50%'`).


polygon(array $points, ImageColor $color): void .[method]
---------------------------------------------------------
Tworzy w obrazie wielokąt. ([więcej |https://www.php.net/manual/en/function.imagepolygon])


rectangle(int $x1, int $y1, int $x2, int $y2, ImageColor $color): void .[method]
--------------------------------------------------------------------------------
Tworzy prostokąt o podanych współrzędnych. ([więcej |https://www.php.net/manual/en/function.imagerectangle])


rectangleWH(int $x, int $y, int $width, int $height, ImageColor $color): void .[method]
---------------------------------------------------------------------------------------
Tworzy prostokąt o podanych współrzędnych, używając szerokości i wysokości.


resize(int|string $width, int|string $height, int $mode=Image::OrSmaller): Image .[method]
------------------------------------------------------------------------------------------
Zmienia rozmiar obrazu, zobacz [więcej informacji |#Zmiana rozmiaru]. Wymiary można podać jako liczby całkowite w pikselach albo jako stringi w procentach (np. `'50%'`).


resolution(?int $resX=null, ?int $resY=null): mixed .[method]
-------------------------------------------------------------
Pozwala ustawić i pobrać rozdzielczość obrazu w DPI (punktach na cal). Jeśli nie podano żadnego z opcjonalnych parametrów, bieżąca rozdzielczość zwracana jest jako tablica indeksowana. Jeśli podano tylko `$resX`, rozdzielczość pozioma i pionowa ustawiane są na tę wartość. Jeśli podano oba opcjonalne parametry, rozdzielczość pozioma i pionowa ustawiane są odpowiednio na te wartości.

Rozdzielczość używana jest wyłącznie jako metainformacja, gdy obrazy odczytywane są z formatów wspierających tego rodzaju informacje i do nich zapisywane (obecnie PNG i JPEG). Nie wpływa na żadne operacje rysowania. Domyślną rozdzielczością nowych obrazów jest 96 DPI. ([więcej |https://www.php.net/manual/en/function.imageresolution])


rotate(float $angle, ImageColor $backgroundColor): Image .[method]
------------------------------------------------------------------
Obraca obraz o podany kąt `$angle` w stopniach. Środkiem obrotu jest środek obrazu, a obrócony obraz może mieć inne wymiary niż oryginał. ([więcej |https://www.php.net/manual/en/function.imagerotate])

.[note]
Wymaga *Bundled GD extension*, więc może nie działać wszędzie.


save(string $file, ?int $quality=null, ?int $type=null): void .[method]
-----------------------------------------------------------------------
Zapisuje obraz do pliku.

Jakość kompresji mieści się w zakresie 0-100 dla JPEG (domyślnie 85), WEBP (domyślnie 80) i AVIF (domyślnie 30) oraz 0-9 dla PNG (domyślnie 9). Jeśli typ nie wynika jednoznacznie z rozszerzenia pliku, możesz podać go za pomocą jednej ze stałych `ImageType`.


saveAlpha(bool $saveflag): void .[method]
-----------------------------------------
Ustawia flagę decydującą o tym, czy przy zapisywaniu obrazów PNG zapisywać pełną informację o kanale alfa (w przeciwieństwie do przezroczystości jednokolorowej).

Nette włącza tę flagę w konstruktorze `Image`, więc obraz wczytany albo utworzony przez `fromFile()`, `fromString()` czy `fromBlank()` zachowuje swój kanał alfa. Zwróć uwagę, że przy domyślnym trybie mieszania alfa rysowanego koloru służy tylko do zmieszania wyniku i nie jest zapisywana, więc jeśli rysowana przezroczystość ma przetrwać, wywołaj najpierw `alphaBlending(false)`. ([więcej |https://www.php.net/manual/en/function.imagesavealpha])


scale(int $newWidth, int $newHeight=-1, int $mode=IMG_BILINEAR_FIXED): Image .[method]
--------------------------------------------------------------------------------------
Skaluje obraz podanym algorytmem interpolacji. ([więcej |https://www.php.net/manual/en/function.imagescale])


send(int $type=ImageType::JPEG, ?int $quality=null): void .[method]
-------------------------------------------------------------------
Wysyła obraz do przeglądarki.

Jakość kompresji mieści się w zakresie 0-100 dla JPEG (domyślnie 85), WEBP (domyślnie 80) i AVIF (domyślnie 30) oraz 0-9 dla PNG (domyślnie 9).


setBrush(Image $brush): void .[method]
--------------------------------------
Ustawia obraz pędzla używany przez wszystkie funkcje rysujące linie (takie jak `line()` i `polygon()`) przy rysowaniu specjalnymi kolorami `IMG_COLOR_BRUSHED` albo `IMG_COLOR_STYLEDBRUSHED`. ([więcej |https://www.php.net/manual/en/function.imagesetbrush])


setClip(int $x1, int $y1, int $x2, int $y2): void .[method]
-----------------------------------------------------------
Ustawia bieżący prostokąt przycięcia, czyli obszar, poza którym nie będą rysowane żadne piksele. ([więcej |https://www.php.net/manual/en/function.imagesetclip])


setInterpolation(int $method=IMG_BILINEAR_FIXED): void .[method]
----------------------------------------------------------------
Ustawia metodę interpolacji, która wpływa na metody `rotate()` i `affine()`. ([więcej |https://www.php.net/manual/en/function.imagesetinterpolation])


getInterpolation(): int .[method]
---------------------------------
Zwraca bieżącą metodę interpolacji używaną przez metody `rotate()` i `affine()`.


setPixel(int $x, int $y, ImageColor $color): void .[method]
-----------------------------------------------------------
Rysuje piksel o podanych współrzędnych. ([więcej |https://www.php.net/manual/en/function.imagesetpixel])


setStyle(array $style): void .[method]
--------------------------------------
Ustawia styl używany przez wszystkie funkcje rysujące linie (takie jak `line()` i `polygon()`) przy rysowaniu specjalnym kolorem `IMG_COLOR_STYLED` albo linii obrazów kolorem `IMG_COLOR_STYLEDBRUSHED`. ([więcej |https://www.php.net/manual/en/function.imagesetstyle])


setThickness(int $thickness): void .[method]
--------------------------------------------
Ustawia grubość linii rysowanych przy rysowaniu prostokątów, wielokątów, łuków itd. na `$thickness` pikseli. ([więcej |https://www.php.net/manual/en/function.imagesetthickness])


setTile(Image $tile): void .[method]
------------------------------------
Ustawia obraz kafelka używany przez wszystkie funkcje wypełniające obszary (takie jak `fill()` i `filledPolygon()`) przy wypełnianiu specjalnym kolorem `IMG_COLOR_TILED`.

Kafelek to obraz służący do wypełnienia obszaru powtarzanym wzorem. Kafelkiem może być dowolny obraz, a ustawiając indeks koloru przezroczystego obrazu kafelka przez `colorTransparent()`, można stworzyć kafelek pozwalający prześwitywać pewnym częściom obszaru pod spodem. ([więcej |https://www.php.net/manual/en/function.imagesettile])


sharpen(): Image .[method]
--------------------------
Wyostrza obraz.

.[note]
Wymaga *Bundled GD extension*, więc może nie działać wszędzie.


toString(int $type=ImageType::JPEG, ?int $quality=null): string .[method]
-------------------------------------------------------------------------
Zwraca obraz jako string.

Jakość kompresji mieści się w zakresie 0-100 dla JPEG (domyślnie 85), WEBP (domyślnie 80) i AVIF (domyślnie 30) oraz 0-9 dla PNG (domyślnie 9).


trueColorToPalette(bool $dither, int $ncolors): void .[method]
--------------------------------------------------------------
Konwertuje obraz truecolor na obraz paletowy. ([więcej |https://www.php.net/manual/en/function.imagetruecolortopalette])


ttfText(float $size, float $angle, int $x, int $y, ImageColor $color, string $fontFile, string $text, array $options=[]): array .[method]
-----------------------------------------------------------------------------------------------------------------------------------------
Zapisuje podany tekst do obrazu. ([więcej |https://www.php.net/manual/en/function.imagettftext])

Praca z obrazami

Klasa Nette\Utils\Image upraszcza manipulowanie obrazami, na przykład zmianę rozmiaru, kadrowanie, wyostrzanie, rysowanie czy łączenie kilku obrazów.

PHP ma obszerny zestaw funkcji do manipulowania obrazami. Ich API nie jest jednak zbyt przyjazne. To nie byłby Nette Framework, gdyby nie przyszedł z rozkosznym API.

Instalacja:

composer require nette/utils

Poniższe przykłady zakładają, że zdefiniowany jest następujący alias klasy:

use Nette\Utils\Image;
use Nette\Utils\ImageColor;
use Nette\Utils\ImageType;

Tworzenie obrazu

Utwórz nowy obraz truecolor, na przykład o wymiarach 100×200:

$image = Image::fromBlank(100, 200);

Opcjonalnie możesz podać kolor tła (domyślnie jest czarny):

$image = Image::fromBlank(100, 200, ImageColor::rgb(125, 0, 0));

Albo wczytaj obraz z pliku:

$image = Image::fromFile('nette.jpg');

Zapis obrazu

Obraz można zapisać do pliku:

$image->save('resampled.jpg');

Możesz podać jakość kompresji z zakresu 0–100 dla JPEG (domyślnie 85), WEBP (domyślnie 80) i AVIF (domyślnie 30) oraz 0–9 dla PNG (domyślnie 9):

$image->save('resampled.jpg', 80); // JPEG, jakość 80%

Jeśli format nie wynika jednoznacznie z rozszerzenia pliku, można go podać za pomocą stałej:

$image->save('resampled.tmp', null, ImageType::JPEG);

Zamiast zapisu na dysk obraz można zapisać do zmiennej:

$data = $image->toString(ImageType::JPEG, 80); // JPEG, jakość 80%

albo wysłać bezpośrednio do przeglądarki wraz z odpowiednim nagłówkiem HTTP Content-Type:

// wysyła nagłówek Content-Type: image/png
$image->send(ImageType::PNG);

Formaty

Obsługiwane formaty to JPEG, PNG, GIF, WebP, AVIF i BMP. Twoja wersja PHP musi je jednak również obsługiwać, co sprawdzisz funkcją isTypeSupported(). Animacje nie są obsługiwane.

Formaty reprezentowane są przez stałe ImageType::JPEG, ImageType::PNG, ImageType::GIF, ImageType::WEBP, ImageType::AVIF i ImageType::BMP.

$supported = Image::isTypeSupported(ImageType::JPEG);

Potrzebujesz wykryć format obrazu przy wczytywaniu? Metoda zwraca go w drugim parametrze:

$image = Image::fromFile('nette.jpg', $type);

Wykrycie bez wczytywania samego obrazu umożliwia Image::detectTypeFromFile().

Zmiana rozmiaru

Częstą operacją jest zmiana rozmiaru obrazu. Bieżące wymiary zwracają metody getWidth() i getHeight().

Do zmiany rozmiaru służy metoda resize(). Przykład proporcjonalnej zmiany rozmiaru tak, aby obraz nie przekroczył 500×300 pikseli (albo szerokość będzie dokładnie 500px, albo wysokość dokładnie 300px; drugi wymiar obliczany jest tak, aby zachować proporcje):

$image->resize(500, 300);

Można podać tylko jeden wymiar, a drugi zostanie obliczony automatycznie:

$image->resize(500, null); // szerokość 500px, wysokość obliczana automatycznie

$image->resize(null, 300); // szerokość obliczana automatycznie, wysokość 300px

Każdy z wymiarów można podać także w procentach:

$image->resize('75%', 300); // 75 % × 300px

Na zachowanie resize() można wpłynąć poniższymi flagami. Wszystkie flagi z wyjątkiem Image::Stretch zachowują proporcje.

Flaga Opis
Image::OrSmaller (domyślna) wynikowe wymiary będą mniejsze lub równe żądanym
Image::OrBigger wypełnia obszar docelowy (i ewentualnie przekracza go w jednym wymiarze)
Image::Cover wypełnia obszar docelowy i przycina wszystko, co go przekracza
Image::ShrinkOnly tylko zmniejsza (zapobiega rozciąganiu małego obrazu)
Image::Stretch nie zachowuje proporcji

Flagi przekazuje się jako trzeci argument metody:

$image->resize(500, 300, Image::OrBigger);

Flagi można łączyć:

$image->resize(500, 300, Image::ShrinkOnly | Image::Stretch);

Obrazy można odbić w pionie albo w poziomie, podając jeden z wymiarów (albo oba) jako liczbę ujemną:

$flipped = $image->resize(null, '-100%'); // odbicie w pionie

$flipped = $image->resize('-100%', '-100%'); // obrót o 180°

$flipped = $image->resize(-125, 500); // zmiana rozmiaru i odbicie w poziomie

Po zmianie rozmiaru obrazu możesz poprawić jego wygląd delikatnym wyostrzeniem:

$image->sharpen();

Kadrowanie

Do kadrowania służy metoda crop():

$image->crop($left, $top, $width, $height);

Podobnie jak przy resize(), wszystkie wartości można podać w procentach. Procenty dla $left i $top liczone są z pozostałej przestrzeni, podobnie jak przy właściwości CSS background-position:

$image->crop('100%', '50%', '80%', '80%');

Obraz można też skadrować automatycznie, na przykład aby usunąć czarne obramowanie:

$image->cropAuto(IMG_CROP_BLACK);

Metoda cropAuto() to obiektowy wrapper funkcji imagecropauto(); więcej informacji znajdziesz w jej dokumentacji.

Kolory

Metoda ImageColor::rgb() pozwala zdefiniować kolor za pomocą wartości czerwonej, zielonej i niebieskiej (RGB). Opcjonalnie możesz podać także wartość przezroczystości z zakresu od 0 (całkowicie przezroczysty) do 1 (całkowicie nieprzezroczysty), tak jak w CSS.

$color = ImageColor::rgb(255, 0, 0); // czerwony
$transparentBlue = ImageColor::rgb(0, 0, 255, 0.5); // półprzezroczysty niebieski

Metoda ImageColor::hex() pozwala zdefiniować kolor w formacie szesnastkowym, podobnie jak w CSS. Obsługuje formaty #rgb, #rrggbb, #rgba i #rrggbbaa:

$color = ImageColor::hex("#F00"); // czerwony
$transparentGreen = ImageColor::hex("#00FF0080"); // półprzezroczysty zielony

Kolorów można używać w innych metodach, takich jak ellipse(), fill() itd.

Rysowanie i edycja

Masz do dyspozycji wszystkie funkcje PHP do manipulowania obrazami, zobacz Przegląd metod, ale opakowane w styl obiektowy:

$image->filledEllipse($centerX, $centerY, $width, $height, ImageColor::rgb(255, 0, 0));

Ponieważ natywne funkcje PHP do rysowania prostokątów są nieco niepraktyczne przez sposób podawania współrzędnych, klasa Image oferuje zamienniki: rectangleWH()filledRectangleWH().

Łączenie kilku obrazów

Na bieżący obraz łatwo umieścisz inny obraz:

$logo = Image::fromFile('logo.png');
$blank = Image::fromBlank(320, 240, ImageColor::rgb(52, 132, 210));

// współrzędne można podać także w procentach
$blank->place($logo, '80%', '80%'); // umieszcza w pobliżu prawego dolnego rogu

Przy umieszczaniu respektowany jest kanał alfa. Ponadto możesz wpłynąć na przezroczystość umieszczanego obrazu (tworząc znak wodny):

$blank->place($image, '80%', '80%', 25); // przezroczystość wynosi 25%

Używanie takiego API to prawdziwa przyjemność!

Przegląd metod

static fromBlank(int $width, int $height, ?ImageColor $color=null)Image

Tworzy nowy obraz truecolor o podanych wymiarach. Domyślnym kolorem jest czarny.

static fromFile(string $file, int &$detectedFormat=null, string &$warnings=null)Image

Wczytuje obraz z pliku i zwraca jego typ w $detectedFormat. Jeśli przekażesz $warnings, wszelkie niekrytyczne ostrzeżenia dekodera obrazu zostaną w nim zapisane, zamiast zostać zgłoszone jako ostrzeżenie PHP; pozostaje null, gdy żadnych nie ma.

static fromString(string $s, int &$detectedFormat=null, string &$warnings=null)Image

Wczytuje obraz ze stringa i zwraca jego typ w $detectedFormat. Jeśli przekażesz $warnings, wszelkie niekrytyczne ostrzeżenia dekodera obrazu zostaną w nim zapisane, zamiast zostać zgłoszone jako ostrzeżenie PHP; pozostaje null, gdy żadnych nie ma.

static rgb(int $red, int $green, int $blue, int $transparency=0)array

Tę funkcję zastąpiła klasa ImageColor, zobacz Kolory.

static typeToExtension(int $type)string

Zwraca rozszerzenie pliku dla podanego typu.

static typeToMimeType(int $type)string

Zwraca typ MIME dla podanego typu.

static extensionToType(string $extension)int

Zwraca typ obrazu na podstawie rozszerzenia pliku.

static detectTypeFromFile(string $file, int &$width=null, int &$height=null)?int

Zwraca typ pliku obrazu, a w parametrach $width i $height również jego wymiary.

static detectTypeFromString(string $s, int &$width=null, int &$height=null)?int

Zwraca typ obrazu ze stringa, a w parametrach $width i $height również jego wymiary.

static isTypeSupported(int $type)bool

Sprawdza, czy podany typ obrazu jest obsługiwany.

static getSupportedTypes(): array

Zwraca tablicę obsługiwanych typów obrazów.

static calculateTextBox(string $text, string $fontFile, float $size, float $angle=0, array $options=[])array

Oblicza wymiary prostokąta otaczającego tekst w określonym foncie i rozmiarze. Zwraca tablicę asocjacyjną zawierającą klucze left, top, width, height. Lewy margines może być ujemny, jeśli tekst zaczyna się lewym nawisem kerningu.

affine(array $affine, ?array $clip=null)Image

Zwraca obraz zawierający przekształcony afinicznie obraz źródłowy, z opcjonalnym obszarem przycięcia. (więcej).

alphaBlending(bool $on): void

Umożliwia dwa różne tryby rysowania na obrazach truecolor. W trybie mieszania składowa kanału alfa koloru podanego wszystkim funkcjom rysującym, takim jak setPixel(), decyduje o tym, ile leżącego pod spodem koloru ma prześwitywać. W efekcie automatycznie miesza istniejący w tym punkcie kolor z kolorem rysowania i zapisuje wynik w obrazie. Wynikowy piksel jest nieprzezroczysty. W trybie bez mieszania kolor rysowania kopiowany jest dosłownie, wraz z informacją o kanale alfa, i zastępuje piksel docelowy. Tryb mieszania nie jest dostępny przy rysowaniu na obrazach paletowych. (więcej)

antialias(bool $on): void

Włącza szybkie metody antyaliasowanego rysowania linii i wielokątów szkieletowych. Nie obsługuje składowych alfa. Działa przez bezpośrednią operację mieszania. Działa wyłącznie z obrazami truecolor.

Używanie prymitywów z antyaliasingiem przy przezroczystym kolorze tła może dać nieoczekiwane wyniki. Metoda mieszania traktuje kolor tła jak każdy inny kolor. Brak obsługi składowej alfa nie pozwala na metodę antyaliasingu opartą na alfie. (więcej)

arc(int $centerX, int $centerY, int $width, int $height, int $startAngle, int $endAngle, ImageColor $color)void

Rysuje łuk okręgu o środku w podanych współrzędnych. (więcej)

colorAllocate(int $red, int $green, int $blue)int

Zwraca identyfikator koloru reprezentujący kolor złożony z podanych składowych RGB. Musi zostać wywołana, aby utworzyć każdy kolor, który ma być użyty w obrazie. (więcej)

colorAllocateAlpha(int $red, int $green, int $blue, int $alpha)int

Zachowuje się identycznie jak colorAllocate(), z dodatkiem parametru przezroczystości $alpha. (więcej)

colorAt(int $x, int $y)int

Zwraca indeks koloru piksela w podanym miejscu obrazu. Jeśli obraz jest typu truecolor, funkcja zwraca wartość RGB tego piksela jako liczbę całkowitą. Aby sięgnąć po poszczególne składowe czerwoną, zieloną i niebieską, użyj przesunięć bitowych i maskowania: (więcej)

colorClosest(int $red, int $green, int $blue)int

Zwraca indeks koloru w palecie obrazu, który jest „najbliższy“ podanej wartości RGB. „Odległość“ między pożądanym kolorem a każdym kolorem palety obliczana jest tak, jakby wartości RGB reprezentowały punkty w przestrzeni trójwymiarowej. (więcej)

colorClosestAlpha(int $red, int $green, int $blue, int $alpha)int

Zwraca indeks koloru w palecie obrazu, który jest „najbliższy“ podanej wartości RGB i poziomowi $alpha. (więcej)

colorClosestHWB(int $red, int $green, int $blue)int

Zwraca indeks koloru o odcieniu, bieli i czerni najbliższych podanemu kolorowi. (więcej)

colorDeallocate(int $color)void

Zwalnia kolor przydzielony wcześniej przez colorAllocate() albo colorAllocateAlpha(). (więcej)

colorExact(int $red, int $green, int $blue)int

Zwraca indeks podanego koloru w palecie obrazu. (więcej)

colorExactAlpha(int $red, int $green, int $blue, int $alpha)int

Zwraca indeks podanego koloru wraz z alfą w palecie obrazu. (więcej)

colorMatch(Image $image2)void

Sprawia, że kolory paletowej wersji obrazu bardziej odpowiadają wersji truecolor. (więcej)

colorResolve(int $red, int $green, int $blue)int

Zwraca indeks koloru dla żądanego koloru, albo dokładnego, albo najbliższej możliwej alternatywy. (więcej)

colorResolveAlpha(int $red, int $green, int $blue, int $alpha)int

Zwraca indeks koloru dla żądanego koloru, albo dokładnego, albo najbliższej możliwej alternatywy. (więcej)

colorSet(int $index, int $red, int $green, int $blue, int $alpha=0)void

Ustawia podany indeks palety na podany kolor. (więcej)

colorsForIndex(int $index)array

Zwraca kolor dla podanego indeksu. (więcej)

colorsTotal(): int

Zwraca liczbę kolorów w palecie obrazu. (więcej)

colorTransparent(?int $color=null)int

Pobiera albo ustawia kolor przezroczysty w obrazie. (więcej)

convolution(array $matrix, float $div, float $offset)void

Stosuje do obrazu macierz splotu, używając podanego współczynnika i przesunięcia. (więcej)

Wymaga Bundled GD extension, więc może nie działać wszędzie.

copy(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH)void

Kopiuje część $src na obraz, zaczynając od współrzędnych $srcX, $srcY, o szerokości $srcW i wysokości $srcH. Zdefiniowany fragment zostanie skopiowany na współrzędne $dstX i $dstY. (więcej)

copyMerge(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH, int $opacity)void

Kopiuje część $src na obraz, zaczynając od współrzędnych $srcX, $srcY, o szerokości $srcW i wysokości $srcH. Zdefiniowany fragment zostanie skopiowany na współrzędne $dstX i $dstY. (więcej)

copyMergeGray(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH, int $opacity)void

Kopiuje część $src na obraz, zaczynając od współrzędnych $srcX, $srcY, o szerokości $srcW i wysokości $srcH. Zdefiniowany fragment zostanie skopiowany na współrzędne $dstX i $dstY.

Funkcja ta jest identyczna z copyMerge(), z tą różnicą, że przy łączeniu zachowuje odcień źródła, konwertując przed operacją kopiowania piksele docelowe do skali szarości. (więcej)

copyResampled(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $dstW, int $dstH, int $srcW, int $srcH)void

Kopiuje prostokątny fragment jednego obrazu do drugiego, płynnie interpolując wartości pikseli, dzięki czemu zwłaszcza zmniejszenie rozmiaru obrazu nadal zachowuje sporo ostrości.

Innymi słowy, copyResampled() weźmie z $src prostokątny obszar o szerokości $srcW i wysokości $srcH na pozycji ($srcX,$srcY) i umieści go w prostokątnym obszarze obrazu o szerokości $dstW i wysokości $dstH na pozycji ($dstX,$dstY).

Jeśli współrzędne oraz szerokości i wysokości źródła i celu się różnią, fragment obrazu zostanie odpowiednio rozciągnięty albo zmniejszony. Współrzędne odnoszą się do lewego górnego rogu. Funkcji można użyć do kopiowania obszarów w obrębie tego samego obrazu, ale jeśli obszary się nakładają, wyniki będą nieprzewidywalne. (więcej)

copyResized(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $dstW, int $dstH, int $srcW, int $srcH)void

Kopiuje prostokątny fragment jednego obrazu do drugiego. Innymi słowy, copyResized() weźmie z $src prostokątny obszar o szerokości $srcW i wysokości $srcH na pozycji ($srcX,$srcY) i umieści go w prostokątnym obszarze obrazu o szerokości $dstW i wysokości $dstH na pozycji ($dstX,$dstY).

Jeśli współrzędne oraz szerokości i wysokości źródła i celu się różnią, fragment obrazu zostanie odpowiednio rozciągnięty albo zmniejszony. Współrzędne odnoszą się do lewego górnego rogu. Funkcji można użyć do kopiowania obszarów w obrębie tego samego obrazu, ale jeśli obszary się nakładają, wyniki będą nieprzewidywalne. (więcej)

crop(int|string $left, int|string $top, int|string $width, int|string $height)Image

Kadruje obraz do podanego obszaru prostokątnego. Wymiary można podać jako liczby całkowite w pikselach albo jako stringi w procentach (np. '50%').

cropAuto(int $mode=0, float $threshold=.5, ?ImageColor $color=null)Image

Automatycznie kadruje obraz zgodnie z podanym $mode. (więcej)

ellipse(int $centerX, int $centerY, int $width, int $height, ImageColor $color)void

Rysuje elipsę o środku w podanych współrzędnych. (więcej)

fill(int $x, int $y, ImageColor $color)void

Wykonuje wypełnienie powodziowe, zaczynając od podanych współrzędnych (lewy górny róg to 0, 0), kolorem $color. (więcej)

filledArc(int $centerX, int $centerY, int $width, int $height, int $startAngle, int $endAngle, ImageColor $color, int $style)void

Rysuje wycinek łuku o środku w podanych współrzędnych. (więcej)

filledEllipse(int $centerX, int $centerY, int $width, int $height, ImageColor $color)void

Rysuje elipsę o środku w podanych współrzędnych. (więcej)

filledPolygon(array $points, ImageColor $color)void

Tworzy w obrazie wypełniony wielokąt. (więcej)

filledRectangle(int $x1, int $y1, int $x2, int $y2, ImageColor $color)void

Tworzy w obrazie prostokąt wypełniony kolorem $color, zaczynający się w punkcie ($x1, $y1) i kończący w ($x2, $y2). Punkt (0, 0) to lewy górny róg obrazu. (więcej)

filledRectangleWH(int $x, int $y, int $width, int $height, ImageColor $color)void

Tworzy w obrazie prostokąt wypełniony kolorem $color, zaczynający się w punkcie ($x, $y), o szerokości $width i wysokości $height. Punkt (0, 0) to lewy górny róg obrazu.

fillToBorder(int $x, int $y, ImageColor $borderColor, ImageColor $color)void

Wykonuje wypełnienie powodziowe, którego kolor granicy określa $borderColor. Punktem startowym wypełnienia jest ($x, $y) (lewy górny róg to 0, 0), a obszar wypełniany jest kolorem $color. (więcej)

filter(int $filtertype, int …$args)void

Stosuje do obrazu podany filtr $filtertype. (więcej)

flip(int $mode): void

Odbija obraz zgodnie z podanym $mode. (więcej)

ftText(float $size, float $angle, int $x, int $y, ImageColor $color, string $fontFile, string $text, array $options=[])array

Zapisuje tekst do obrazu. (więcej)

gammaCorrect(float $inputgamma, float $outputgamma)void

Stosuje do obrazu korekcję gamma na podstawie gammy wejściowej i wyjściowej. (więcej)

getClip(): array

Pobiera bieżący prostokąt przycięcia, czyli obszar, poza którym nie będą rysowane żadne piksele. (więcej)

getHeight(): int

Zwraca wysokość obrazu.

getImageResource(): GdImage

Zwraca leżący u podstaw zasób obrazu GD.

getWidth(): int

Zwraca szerokość obrazu.

interlace(?int $interlace=null)int

Włącza albo wyłącza przeplot. Jeśli przeplot jest włączony, a obraz zapisywany jest jako JPEG, zostanie zapisany jako progresywny JPEG. (więcej)

isTrueColor(): bool

Sprawdza, czy obraz jest typu truecolor. (więcej)

layerEffect(int $effect)void

Ustawia flagę mieszania alfa, aby używać efektów warstwowych. (więcej)

line(int $x1, int $y1, int $x2, int $y2, ImageColor $color)void

Rysuje linię między dwoma podanymi punktami. (więcej)

openPolygon(array $points, ImageColor $color)void

Rysuje w obrazie otwarty wielokąt. W odróżnieniu od polygon() nie rysuje linii między ostatnim a pierwszym punktem. (więcej)

paletteCopy(Image $source)void

Kopiuje paletę z $source do obrazu. (więcej)

paletteToTrueColor(): void

Konwertuje obraz paletowy na obraz truecolor. (więcej)

place(Image $image, int|string $left=0, int|string $top=0, int $opacity=100)Image

Kopiuje $image na bieżący obraz na współrzędnych ($left, $top). Współrzędne można podać jako liczby całkowite w pikselach albo jako stringi w procentach (np. '50%').

polygon(array $points, ImageColor $color)void

Tworzy w obrazie wielokąt. (więcej)

rectangle(int $x1, int $y1, int $x2, int $y2, ImageColor $color)void

Tworzy prostokąt o podanych współrzędnych. (więcej)

rectangleWH(int $x, int $y, int $width, int $height, ImageColor $color)void

Tworzy prostokąt o podanych współrzędnych, używając szerokości i wysokości.

resize(int|string $width, int|string $height, int $mode=Image::OrSmaller)Image

Zmienia rozmiar obrazu, zobacz więcej informacji. Wymiary można podać jako liczby całkowite w pikselach albo jako stringi w procentach (np. '50%').

resolution(?int $resX=null, ?int $resY=null)mixed

Pozwala ustawić i pobrać rozdzielczość obrazu w DPI (punktach na cal). Jeśli nie podano żadnego z opcjonalnych parametrów, bieżąca rozdzielczość zwracana jest jako tablica indeksowana. Jeśli podano tylko $resX, rozdzielczość pozioma i pionowa ustawiane są na tę wartość. Jeśli podano oba opcjonalne parametry, rozdzielczość pozioma i pionowa ustawiane są odpowiednio na te wartości.

Rozdzielczość używana jest wyłącznie jako metainformacja, gdy obrazy odczytywane są z formatów wspierających tego rodzaju informacje i do nich zapisywane (obecnie PNG i JPEG). Nie wpływa na żadne operacje rysowania. Domyślną rozdzielczością nowych obrazów jest 96 DPI. (więcej)

rotate(float $angle, ImageColor $backgroundColor)Image

Obraca obraz o podany kąt $angle w stopniach. Środkiem obrotu jest środek obrazu, a obrócony obraz może mieć inne wymiary niż oryginał. (więcej)

Wymaga Bundled GD extension, więc może nie działać wszędzie.

save(string $file, ?int $quality=null, ?int $type=null)void

Zapisuje obraz do pliku.

Jakość kompresji mieści się w zakresie 0–100 dla JPEG (domyślnie 85), WEBP (domyślnie 80) i AVIF (domyślnie 30) oraz 0–9 dla PNG (domyślnie 9). Jeśli typ nie wynika jednoznacznie z rozszerzenia pliku, możesz podać go za pomocą jednej ze stałych ImageType.

saveAlpha(bool $saveflag)void

Ustawia flagę decydującą o tym, czy przy zapisywaniu obrazów PNG zapisywać pełną informację o kanale alfa (w przeciwieństwie do przezroczystości jednokolorowej).

Nette włącza tę flagę w konstruktorze Image, więc obraz wczytany albo utworzony przez fromFile(), fromString() czy fromBlank() zachowuje swój kanał alfa. Zwróć uwagę, że przy domyślnym trybie mieszania alfa rysowanego koloru służy tylko do zmieszania wyniku i nie jest zapisywana, więc jeśli rysowana przezroczystość ma przetrwać, wywołaj najpierw alphaBlending(false). (więcej)

scale(int $newWidth, int $newHeight=-1, int $mode=IMG_BILINEAR_FIXED)Image

Skaluje obraz podanym algorytmem interpolacji. (więcej)

send(int $type=ImageType::JPEG, ?int $quality=null)void

Wysyła obraz do przeglądarki.

Jakość kompresji mieści się w zakresie 0–100 dla JPEG (domyślnie 85), WEBP (domyślnie 80) i AVIF (domyślnie 30) oraz 0–9 dla PNG (domyślnie 9).

setBrush(Image $brush)void

Ustawia obraz pędzla używany przez wszystkie funkcje rysujące linie (takie jak line() i polygon()) przy rysowaniu specjalnymi kolorami IMG_COLOR_BRUSHED albo IMG_COLOR_STYLEDBRUSHED. (więcej)

setClip(int $x1, int $y1, int $x2, int $y2)void

Ustawia bieżący prostokąt przycięcia, czyli obszar, poza którym nie będą rysowane żadne piksele. (więcej)

setInterpolation(int $method=IMG_BILINEAR_FIXED)void

Ustawia metodę interpolacji, która wpływa na metody rotate() i affine(). (więcej)

getInterpolation(): int

Zwraca bieżącą metodę interpolacji używaną przez metody rotate() i affine().

setPixel(int $x, int $y, ImageColor $color)void

Rysuje piksel o podanych współrzędnych. (więcej)

setStyle(array $style)void

Ustawia styl używany przez wszystkie funkcje rysujące linie (takie jak line() i polygon()) przy rysowaniu specjalnym kolorem IMG_COLOR_STYLED albo linii obrazów kolorem IMG_COLOR_STYLEDBRUSHED. (więcej)

setThickness(int $thickness)void

Ustawia grubość linii rysowanych przy rysowaniu prostokątów, wielokątów, łuków itd. na $thickness pikseli. (więcej)

setTile(Image $tile)void

Ustawia obraz kafelka używany przez wszystkie funkcje wypełniające obszary (takie jak fill() i filledPolygon()) przy wypełnianiu specjalnym kolorem IMG_COLOR_TILED.

Kafelek to obraz służący do wypełnienia obszaru powtarzanym wzorem. Kafelkiem może być dowolny obraz, a ustawiając indeks koloru przezroczystego obrazu kafelka przez colorTransparent(), można stworzyć kafelek pozwalający prześwitywać pewnym częściom obszaru pod spodem. (więcej)

sharpen(): Image

Wyostrza obraz.

Wymaga Bundled GD extension, więc może nie działać wszędzie.

toString(int $type=ImageType::JPEG, ?int $quality=null)string

Zwraca obraz jako string.

Jakość kompresji mieści się w zakresie 0–100 dla JPEG (domyślnie 85), WEBP (domyślnie 80) i AVIF (domyślnie 30) oraz 0–9 dla PNG (domyślnie 9).

trueColorToPalette(bool $dither, int $ncolors)void

Konwertuje obraz truecolor na obraz paletowy. (więcej)

ttfText(float $size, float $angle, int $x, int $y, ImageColor $color, string $fontFile, string $text, array $options=[])array

Zapisuje podany tekst do obrazu. (więcej)