Nette Documentation Preview

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

.[perex]
Klasa [api:Nette\Utils\Image] ułatwia manipulowanie obrazami, takie jak zmiana rozmiaru, przycinanie, wyostrzanie, rysowanie czy łączenie wielu obrazów.


PHP posiada rozbudowany zestaw funkcji do manipulowania obrazami. Jednak ich API nie jest zbyt wygodne. To nie byłby Nette Framework, żeby nie wymyślić seksownego API.

Instalacja:

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

Wszystkie przykłady zakładają, że alias został utworzony:

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


Tworzenie obrazu .[#toc-creating-an-image]
==========================================

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

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

Możesz opcjonalnie określić kolor tła (domyślnie jest to kolor czarny):

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

Albo załadować obraz z pliku:

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


Zapisywanie obrazu .[#toc-save-the-image]
=========================================

Obraz można zapisać do pliku:

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

Możemy określić jakość kompresji 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):

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

Jeśli format nie jest oczywisty na podstawie rozszerzenia pliku, można go określić za pomocą [stałej |#Formats]:

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

Obraz może być zapisany do zmiennej zamiast na dysk:

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

lub wysyłane bezpośrednio do przeglądarki z odpowiednim nagłówkiem HTTP `Content-Type`:

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


Formaty .[#toc-formats]
=======================

Obsługiwane formaty to JPEG, PNG, GIF, WebP, AVIF i BMP. Muszą być one jednak również obsługiwane przez daną wersję PHP, co można zweryfikować za pomocą funkcji [isTypeSupported() |#isTypeSupported()]. Animacje nie są obsługiwane.

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

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

Chcesz wykryć format obrazu podczas ładowania? Metoda zwraca go w drugim parametrze:

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

Rzeczywiste wykrywanie bez ładowania obrazu jest wykonywane przez `Image::detectTypeFromFile()`.


Zmień rozmiar .[#toc-image-resize]
==================================

Często wykonywaną operacją jest zmiana rozmiaru obrazu. Rzeczywiste wymiary są zwracane przez metody `getWidth()` i `getHeight()`.

Metoda `resize()` służy do zmiany rozmiaru obrazu tak, aby nie przekraczał on 500x300 pikseli (albo szerokość będzie wynosiła dokładnie 500 px, albo wysokość dokładnie 300 px, jeden z wymiarów jest obliczany dla zachowania proporcji):

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

Możliwe jest określenie tylko jednego wymiaru, a drugi zostanie obliczony:

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

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

Każdy wymiar może być określony jako procent:

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

Na zachowanie `resize` mogą wpływać następujące objawy. Wszystkie poza `Image::Stretch` zachowują proporcje.

|---------------------------------------------------------------------------------------
| Flaga | Opis
|---------------------------------------------------------------------------------------
| `Image::OrSmaller` (domyślnie) | wymiary wynikowe będą mniejsze lub równe żądanym wymiarom
| `Image::OrBigger` | wypełnia (i ewentualnie przekracza w jednym wymiarze) obszar docelowy
| `Image::Cover` | wypełnia obszar docelowy i przycina to, co go przekracza
| `Image::ShrinkOnly` | tylko zmniejszanie (unikanie rozciągania małego obrazu)
| `Image::Stretch` | nie zachowuj proporcji


Flagi są podawane jako trzeci argument funkcji:

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

Flagi mogą być łączone:

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

Obrazy można obrócić w pionie lub poziomie, nadając jednemu z wymiarów (lub obu) wartość ujemną:

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

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

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

Po zmniejszeniu obrazu można poprawić jego wygląd poprzez dokładne wyostrzenie:

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


Uprawa .[#toc-cropping]
=======================

Do uprawy stosuje się metodę `crop()`:

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

Podobnie jak w przypadku `resize()`, wszystkie wartości mogą być podane w procentach. Procenty dla `$left` i `$top` są obliczane z pozostałej przestrzeni, podobnie jak właściwość CSS `background-position`:

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

[* crop.svg *]


Obraz można również przyciąć automatycznie, na przykład przycinając czarne obramowania:

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

Metoda `cropAuto()` jest obiektowym zamiennikiem funkcji `imagecropauto()`, więcej informacji można znaleźć w [jej dokumentacji |https://www.php.net/manual/en/function.imagecropauto].


Kolory .[#toc-colors]
=====================

Metoda `ImageColor::rgb()` umożliwia zdefiniowanie koloru przy użyciu wartości czerwonego, zielonego i niebieskiego (RGB). Opcjonalnie można również określić wartość przezroczystości w zakresie od 0 (całkowicie przezroczysty) do 1 (całkowicie nieprzezroczysty), podobnie jak w CSS.

```php
$color = ImageColor::rgb(255, 0, 0); // Red
$transparentBlue = ImageColor::rgb(0, 0, 255, 0.5); // Semi-transparent blue
```

Metoda `ImageColor::hex()` umożliwia zdefiniowanie koloru przy użyciu formatu szesnastkowego, podobnie jak w CSS. Obsługuje formaty `#rgb`, `#rrggbb`, `#rgba` i `#rrggbbaa`:

```php
$color = ImageColor::hex("#F00"); // Red
$transparentGreen = ImageColor::hex("#00FF0080"); // Semi-transparent green
```

Kolory mogą być używane w innych metodach, takich jak `ellipse()`, `fill()`, itp.


Rysowanie i edycja .[#toc-drawing-and-editing]
==============================================

Możesz rysować, możesz pisać, możesz używać wszystkich funkcji PHP do manipulacji obrazem, patrz [Przegląd metod |#Overview of methods], ale w opakowaniu obiektowym:

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

Ponieważ funkcje PHP do rysowania prostokątów są niepraktyczne ze względu na konieczność określania współrzędnych, klasa `Image` oferuje ich zamienniki w postaci funkcji [rectangleWH |#rectangleWH()] [( |#filledRectangleWH()] [) |#rectangleWH()] i [filledRectangleWH() |#filledRectangleWH()].


Łączenie wielu obrazów .[#toc-merge-multiple-images]
====================================================

Możesz łatwo wstawić inny obraz do obrazu:

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

// współrzędne mogą być ponownie podane w procentach
$blank->place($logo, '80%', '80%'); // wstawiamy w pobliżu prawego dolnego rogu
```

Alfabet jest respektowany podczas wstawiania, a my możemy wpływać na przezroczystość wstawianego obrazu (tworzymy znak wodny):

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

To API to prawdziwa radość z użytkowania!


Przegląd metod .[#toc-overview-of-methods]
==========================================


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


static fromFile(string $file, int &$detectedFormat=null): Image .[method]
-------------------------------------------------------------------------
Odczytuje obraz z pliku i zwraca jego [typ |#Formats] w `$detectedFormat`.


static fromString(string $s, int &$detectedFormat=null): Image .[method]
------------------------------------------------------------------------
Odczytuje obraz z ciągu znaków i zwraca jego [typ |#Formats] w `$detectedFormat`.


static rgb(int $red, int $green, int $blue, int $transparency=0): array .[method][deprecated]
---------------------------------------------------------------------------------------------
Funkcja ta została zastąpiona przez klasę `ImageColor`, patrz [kolory |#Colors].


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


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


static extensionToType(string $extension): int .[method]
--------------------------------------------------------
Zwraca [typ |#Formats] obrazu zgodnie z rozszerzeniem pliku.


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


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


static isTypeSupported(int $type): bool .[method]
-------------------------------------------------
Określa, czy dany [typ |#Formats] obrazu jest obsługiwany.


static getSupportedTypes(): array .[method]{data-version:4.0.4}
---------------------------------------------------------------
Zwraca tablicę obsługiwanych typów obrazów (stałe `ImageType::XXX`).


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


affine(array $affine, ?array $clip=null): Image .[method]
---------------------------------------------------------
Zwróć obraz zawierający affine-transformed src image używając opcjonalnego regionu przycinania ([więcej |https://www.php.net/manual/en/function.imageaffine]).


affineMatrixConcat(array $m1, array $m2): array .[method]
---------------------------------------------------------
Zwraca konkatenację dwóch macierzy przekształceń afinicznych, co jest przydatne, gdy do tego samego obrazu należy zastosować wiele przekształceń jednocześnie. ([więcej |https://www.php.net/manual/en/function.imageaffinematrixconcat])


affineMatrixGet(int $type, ?mixed $options=null): array .[method]
-----------------------------------------------------------------
Zwraca macierz przekształcenia macierzy ([więcej |https://www.php.net/manual/en/function.imageaffinematrixget]).


alphaBlending(bool $on): void .[method]
---------------------------------------
Umożliwia dwa różne tryby rysowania w obrazach truecolor. W trybie mieszania składowa kanału alfa koloru używanego we wszystkich funkcjach rysunkowych, takich jak `setPixel()`, określa, w jakim stopniu należy pozwolić, aby kolor podstawowy prześwitywał. W rezultacie w tym momencie istniejący kolor jest automatycznie mieszany z kolorem rysunku, a wynik jest zapisywany w obrazie. Powstały w ten sposób piksel jest nieprzezroczysty. W trybie nie mieszania, kolor kreskówki jest kopiowany dosłownie z informacją o kanale alfa i zastępowany pikselem docelowym. Tryb blend nie jest dostępny podczas rysowania na obrazkach paletowych. ([więcej |https://www.php.net/manual/en/function.imagealphablending])


antialias(bool $on): void .[method]
-----------------------------------
Aktywuj rysowanie linii wygładzonych i wielokątów. Nie obsługuje kanałów alfa. Działa tylko z obrazami truecolor.

Użycie antyaliasowanego prymitywu z przezroczystym kolorem tła może skończyć się nieoczekiwanymi rezultatami. Metoda blend wykorzystuje kolor tła jak każdy inny kolor. ([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 być wywołany, aby stworzyć 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ę tak samo jak `colorAllocate()` z dodaniem parametru przejrzystości `$alpha`. ([więcej |https://www.php.net/manual/en/function.imagecolorallocatealpha])


colorAt(int $x, int $y): int .[method]
--------------------------------------
Zwraca indeks koloru piksela w określonym miejscu obrazu. Jeśli obraz jest truecolor, funkcja zwraca wartość RGB tego piksela jako liczbę całkowitą. Użyj przesunięcia bitów i maskowania bitów, aby uzyskać dostęp do oddzielnych wartości dla składowej czerwonej, zielonej i niebieskiej: ([więcej |https://www.php.net/manual/en/function.imagecolorat])


colorClosest(int $red, int $green, int $blue): int .[method]
------------------------------------------------------------
Zwraca indeks koloru w palecie obrazów, który jest "najbliższy" określonej wartości RGB. "Odległość" między pożądanym kolorem a każdym kolorem w palecie jest obliczana 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 obrazów, który jest "najbliższy" podanej wartości RGB i poziomu `$alpha`. ([więcej |https://www.php.net/manual/en/function.imagecolorclosestalpha])


colorClosestHWB(int $red, int $green, int $blue): int .[method]
---------------------------------------------------------------
Uzyskaj indeks koloru, który ma odcień, biel i czerń najbliższe podanemu kolorowi. ([więcej |https://www.php.net/manual/en/function.imagecolorclosesthwb])


colorDeallocate(int $color): void .[method]
-------------------------------------------
De-allocates a color previously assigned by `colorAllocate()` or `colorAllocateAlpha()`. ([więcej |https://www.php.net/manual/en/function.imagecolordeallocate])


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


colorExactAlpha(int $red, int $green, int $blue, int $alpha): int .[method]
---------------------------------------------------------------------------
Zwraca indeks określonego koloru + alfa w palecie obrazów. ([więcej |https://www.php.net/manual/en/function.imagecolorexactalpha])


colorMatch(Image $image2): void .[method]
-----------------------------------------
Dopasowuje kolory palety do drugiego panelu. ([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ładny kolor, albo najbliższą możliwą alternatywę. ([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ładny kolor, albo najbliższą możliwą alternatywę. ([więcej |https://www.php.net/manual/en/function.imagecolorresolvealpha])


colorSet(int $index, int $red, int $green, int $blue): void .[method]
---------------------------------------------------------------------
Ustawia określony indeks w palecie na określony kolor. ([więcej |https://www.php.net/manual/en/function.imagecolorset])


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


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


colorTransparent(?int $color=null): int .[method]
-------------------------------------------------
Uzyskuje lub 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 macierz konwolucji do obrazu, używając danego współczynnika i przesunięcia. ([więcej |https://www.php.net/manual/en/function.imageconvolution])

.[note]
Wymaga obecności rozszerzenia *Bundled GD*, 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 fragment strony `$src` do obrazu rozpoczynającego się na współrzędnych `$srcX`, `$srcY` o szerokości `$srcW` i wysokości `$srcH`. Zdefiniowana część zostanie skopiowana do współrzędnych `$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 fragment strony `$src` do obrazu rozpoczynającego się na współrzędnych `$srcX`, `$srcY` o szerokości `$srcW` i wysokości `$srcH`. Zdefiniowana część zostanie skopiowana do współrzędnych `$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 fragment strony `$src` do obrazu rozpoczynającego się na współrzędnych `$srcX`, `$srcY` o szerokości `$srcW` i wysokości `$srcH`. Zdefiniowana część zostanie skopiowana na współrzędne `$dstX` i `$dstY`.

Funkcja ta jest identyczna jak `copyMerge()` z tym wyjątkiem, że zachowuje źródłowy odcień podczas scalania poprzez konwersję pikseli docelowych do skali szarości przed operacją kopiowania. ([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 przy zmniejszaniu rozmiaru, obraz nadal zachowuje dużą wyrazistość.

Innymi słowy, `copyResampled()` pobiera prostokątny region z `$src` o szerokości `$srcW` i wysokości `$srcH` w pozycji (`$srcX`, `$srcY`) i umieszcza go w prostokątnym regionie obrazu o szerokości `$dstW` i wysokości `$dstH` w pozycji (`$dstX`, `$dstY`).

Jeśli współrzędne źródła i miejsca docelowego, szerokość i wysokość są różne, fragment obrazu jest odpowiednio rozciągany lub zmniejszany. Współrzędne odnoszą się do lewego górnego rogu. Funkcja ta może być używana do kopiowania obszarów na tym samym obrazie, ale jeśli obszary będą się nakładać, wyniki nie będą przewidywalne. ([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 innego obrazu. Innymi słowy, `copyResized()` pobiera prostokątny region z `$src` o szerokości `$srcW` i wysokości `$srcH` w pozycji (`$srcX`, `$srcY`) i umieszcza go w prostokątnym regionie obrazu o szerokości `$dstW` ] i wysokości `$dstH` w pozycji (`$dstX`, `$dstY`).

Jeśli współrzędne źródła i miejsca docelowego, szerokość i wysokość są różne, fragment obrazu jest odpowiednio rozciągany lub zmniejszany. Współrzędne odnoszą się do lewego górnego rogu. Funkcja ta może być używana do kopiowania obszarów na tym samym obrazie, ale jeśli obszary będą się nakładać, wyniki nie będą przewidywalne. ([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]
-----------------------------------------------------------------------------------------------
Przycina obraz do zadanego prostokątnego obszaru. Wymiary mogą być określone jako liczby całkowite w pikselach lub ciągi znaków w procentach (na przykład `'50%'`).


cropAuto(int $mode=-1, float $threshold=.5, ?ImageColor $color=null): Image .[method]
-------------------------------------------------------------------------------------
Automatycznie przycina 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ę wyśrodkowaną na podanych współrzędnych. ([więcej |https://www.php.net/manual/en/function.imageellipse])


fill(int $x, int $y, ImageColor $color): void .[method]
-------------------------------------------------------
Wypełnia obszar zaczynający się na podanej współrzędnej (lewa górna to 0, 0) podaną `$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 częściowy łuk 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ę wyśrodkowaną na podanych współrzędnych. ([więcej |https://www.php.net/manual/en/function.imagefilledellipse])


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


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


filledRectangleWH(int $left, int $top, int $width, int $height, ImageColor $color): void .[method]
--------------------------------------------------------------------------------------------------
Tworzy prostokąt wypełniony `$color` na obrazie, zaczynając od punktów `$left` i `$top` o szerokości `$width` i wysokości `$height`. Punkt 0, 0 to lewy górny róg obrazu.


fillToBorder(int $x, int $y, int $border, ImageColor $color): void .[method]
----------------------------------------------------------------------------
Tworzy wypełnienie, którego kolor jest określony przez `$border`. Punktem początkowym wypełnienia jest `$x`, `$y` (lewa górna część to 0, 0), a obszar jest wypełniony kolorem `$color`. ([więcej |https://www.php.net/manual/en/function.imagefilltoborder])


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


flip(int $mode): void .[method]
-------------------------------
Odwraca obraz za pomocą podanego `$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]
----------------------------------------------------------------------------------------------------------------------------------------
Wpisz tekst na obrazku. ([więcej |https://www.php.net/manual/en/function.imagefttext])


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


getClip(): array .[method]
--------------------------
Zwraca aktualny crop, czyli obszar, poza którym nie będą rysowane piksele. ([więcej |https://www.php.net/manual/en/function.imagegetclip])


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


getImageResource(): resource|GdImage .[method]
----------------------------------------------
Zwraca oryginalny zasób.


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


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


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


layerEffect(int $effect): void .[method]
----------------------------------------
Ustaw flagę alfa blend, aby użyć 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ę pomiędzy dwoma podanymi punktami. ([więcej |https://www.php.net/manual/en/function.imageline])


openPolygon(array $points, ImageColor $color): void .[method]
-------------------------------------------------------------
Rysuje na obrazie otwarty wielokąt. W odróżnieniu od `polygon()`, między ostatnim a pierwszym punktem nie rysuje się linii. ([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 oparty na paletach na obraz w pełnym kolorze. ([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 stronę `$image` do obrazu na współrzędnych `$left` i `$top`. Współrzędne mogą być określone jako liczby całkowite w pikselach lub łańcuchy w procentach (na przykład `'50%'`).


polygon(array $points, ImageColor $color): void .[method]
---------------------------------------------------------
Tworzy wielokąt w obrazie. ([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 na podanych współrzędnych ([więcej |https://www.php.net/manual/en/function.imagerectangle]).


rectangleWH(int $left, int $top, int $width, int $height, ImageColor $color): void .[method]
--------------------------------------------------------------------------------------------
Tworzy prostokąt o podanych współrzędnych.


resize(int|string $width, int|string $height, int $flags=Image::OrSmaller): Image .[method]
-------------------------------------------------------------------------------------------
Zmienia rozmiar obrazu, [więcej informacji |#Image-Resize]. Wymiary mogą być określone jako liczby całkowite w pikselach lub ciągi znaków w procentach (na przykład `'50%'`).


resolution(?int $resX=null, ?int $resY=null): mixed .[method]
-------------------------------------------------------------
Ustawia lub zwraca rozdzielczość obrazu w DPI (punkty na cal). Jeśli żaden z opcjonalnych parametrów nie zostanie określony, bieżąca rozdzielczość jest zwracana jako indeksowane pole. Jeśli określona jest tylko `$resX`, rozdzielczość pozioma i pionowa są ustawione na tę wartość. Jeśli oba opcjonalne parametry są określone, rozdzielczości pozioma i pionowa są ustawione na te wartości.

Rozdzielczość jest używana jako meta informacja tylko wtedy, gdy obrazy są odczytywane i zapisywane w formatach obsługujących ten rodzaj informacji (obecnie PNG i JPEG). Nie ma to wpływu na żadne operacje rysunkowe. Domyślna rozdzielczość nowych zdjęć to 96 DPI. ([więcej |https://www.php.net/manual/en/function.imageresolution])


rotate(float $angle, int $backgroundColor): Image .[method]
-----------------------------------------------------------
Obraca obraz przy użyciu określonej `$angle` w stopniach. Środek obrotu jest środkiem obrazu, a obrócony obraz może mieć inne wymiary niż obraz oryginalny. ([więcej |https://www.php.net/manual/en/function.imagerotate])

.[note]
Wymaga obecności rozszerzenia *Bundled GD*, 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 jest oczywisty z rozszerzenia pliku, można go określić za pomocą jednej ze stałych `ImageType`.


saveAlpha(bool $saveflag): void .[method]
-----------------------------------------
Ustawia flagę, aby zachować pełną informację o kanale alfa (w przeciwieństwie do przezroczystości monochromatycznej) podczas zapisywania obrazów PNG.

Alfablending musi być wyłączony (`alphaBlending(false)`), aby zachować kanał alfa w pierwszej kolejności. ([więcej |https://www.php.net/manual/en/function.imagesavealpha])


scale(int $newWidth, int $newHeight=-1, int $mode=IMG_BILINEAR_FIXED): Image .[method]
--------------------------------------------------------------------------------------
Skalowanie obrazu z wykorzystaniem podanego algorytmu interpolacji. ([więcej |https://www.php.net/manual/en/function.imagescale])


send(int $type=ImageType::JPEG, ?int $quality=null): void .[method]
-------------------------------------------------------------------
Drukuje 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, który ma być używany we wszystkich funkcjach rysowania linii (na przykład `line()` i `polygon()`) podczas rysowania z użyciem specjalnych kolorów IMG_COLOR_BRUSHED lub 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 aktualny crop, czyli obszar poza którym nie będą rysowane 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])


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


setStyle(array $style): void .[method]
--------------------------------------
Ustawia styl, który ma być używany przez wszystkie funkcje rysowania linii (na przykład `line()` i `polygon()`) podczas rysowania z kolorem specjalnym IMG_COLOR_STYLED lub linii obrazu z kolorem IMG_COLOR_STYLEDBRUSHED. ([więcej |https://www.php.net/manual/en/function.imagesetstyle])


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


setTile(Image $tile): void .[method]
------------------------------------
Ustawia obraz kafelka, który będzie używany we wszystkich funkcjach wypełniania regionów (na przykład `fill()` i `filledPolygon()`), gdy wypełniony jest specjalnym kolorem IMG_COLOR_TILED.

Kafelek jest obrazem używanym do wypełnienia regionu powtarzającym się wzorem. Jako kafelek można użyć dowolnego obrazu, a ustawiając indeks przezroczystego koloru obrazu kafelka za pomocą strony `colorTransparent()`, można stworzyć kafelek, w którym pewne części bazowego regionu będą prześwitywać. ([więcej |https://www.php.net/manual/en/function.imagesettile])


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

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


toString(int $type=ImageType::JPEG, ?int $quality=null): string .[method]
-------------------------------------------------------------------------
Zapisuje obraz w postaci ciągu znaków.

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 palety. ([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 na obrazie. ([więcej |https://www.php.net/manual/en/function.imagettftext])

Praca z obrazami

Klasa Nette\Utils\Image ułatwia manipulowanie obrazami, takie jak zmiana rozmiaru, przycinanie, wyostrzanie, rysowanie czy łączenie wielu obrazów.

PHP posiada rozbudowany zestaw funkcji do manipulowania obrazami. Jednak ich API nie jest zbyt wygodne. To nie byłby Nette Framework, żeby nie wymyślić seksownego API.

Instalacja:

composer require nette/utils

Wszystkie przykłady zakładają, że alias został utworzony:

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

Tworzenie obrazu

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

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

Możesz opcjonalnie określić kolor tła (domyślnie jest to kolor czarny):

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

Albo załadować obraz z pliku:

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

Zapisywanie obrazu

Obraz można zapisać do pliku:

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

Możemy określić jakość kompresji 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):

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

Jeśli format nie jest oczywisty na podstawie rozszerzenia pliku, można go określić za pomocą stałej:

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

Obraz może być zapisany do zmiennej zamiast na dysk:

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

lub wysyłane bezpośrednio do przeglądarki 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. Muszą być one jednak również obsługiwane przez daną wersję PHP, co można zweryfikować za pomocą funkcji isTypeSupported(). Animacje nie są obsługiwane.

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

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

Chcesz wykryć format obrazu podczas ładowania? Metoda zwraca go w drugim parametrze:

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

Rzeczywiste wykrywanie bez ładowania obrazu jest wykonywane przez Image::detectTypeFromFile().

Zmień rozmiar

Często wykonywaną operacją jest zmiana rozmiaru obrazu. Rzeczywiste wymiary są zwracane przez metody getWidth() i getHeight().

Metoda resize() służy do zmiany rozmiaru obrazu tak, aby nie przekraczał on 500×300 pikseli (albo szerokość będzie wynosiła dokładnie 500 px, albo wysokość dokładnie 300 px, jeden z wymiarów jest obliczany dla zachowania proporcji):

$image->resize(500, 300);

Możliwe jest określenie tylko jednego wymiaru, a drugi zostanie obliczony:

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

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

Każdy wymiar może być określony jako procent:

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

Na zachowanie resize mogą wpływać następujące objawy. Wszystkie poza Image::Stretch zachowują proporcje.

Flaga Opis
Image::OrSmaller (domyślnie) wymiary wynikowe będą mniejsze lub równe żądanym wymiarom
Image::OrBigger wypełnia (i ewentualnie przekracza w jednym wymiarze) obszar docelowy
Image::Cover wypełnia obszar docelowy i przycina to, co go przekracza
Image::ShrinkOnly tylko zmniejszanie (unikanie rozciągania małego obrazu)
Image::Stretch nie zachowuj proporcji

Flagi są podawane jako trzeci argument funkcji:

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

Flagi mogą być łączone:

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

Obrazy można obrócić w pionie lub poziomie, nadając jednemu z wymiarów (lub obu) wartość ujemną:

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

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

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

Po zmniejszeniu obrazu można poprawić jego wygląd poprzez dokładne wyostrzenie:

$image->sharpen();

Uprawa

Do uprawy stosuje się metodę crop():

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

Podobnie jak w przypadku resize(), wszystkie wartości mogą być podane w procentach. Procenty dla $left i $top są obliczane z pozostałej przestrzeni, podobnie jak właściwość CSS background-position:

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

Obraz można również przyciąć automatycznie, na przykład przycinając czarne obramowania:

$image->cropAuto(IMG_CROP_BLACK);

Metoda cropAuto() jest obiektowym zamiennikiem funkcji imagecropauto(), więcej informacji można znaleźć w jej dokumentacji.

Kolory

Metoda ImageColor::rgb() umożliwia zdefiniowanie koloru przy użyciu wartości czerwonego, zielonego i niebieskiego (RGB). Opcjonalnie można również określić wartość przezroczystości w zakresie od 0 (całkowicie przezroczysty) do 1 (całkowicie nieprzezroczysty), podobnie jak w CSS.

$color = ImageColor::rgb(255, 0, 0); // Red
$transparentBlue = ImageColor::rgb(0, 0, 255, 0.5); // Semi-transparent blue

Metoda ImageColor::hex() umożliwia zdefiniowanie koloru przy użyciu formatu szesnastkowego, podobnie jak w CSS. Obsługuje formaty #rgb, #rrggbb, #rgba i #rrggbbaa:

$color = ImageColor::hex("#F00"); // Red
$transparentGreen = ImageColor::hex("#00FF0080"); // Semi-transparent green

Kolory mogą być używane w innych metodach, takich jak ellipse(), fill(), itp.

Rysowanie i edycja

Możesz rysować, możesz pisać, możesz używać wszystkich funkcji PHP do manipulacji obrazem, patrz Przegląd metod, ale w opakowaniu obiektowym:

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

Ponieważ funkcje PHP do rysowania prostokątów są niepraktyczne ze względu na konieczność określania współrzędnych, klasa Image oferuje ich zamienniki w postaci funkcji rectangleWH ( )filledRectangleWH().

Łączenie wielu obrazów

Możesz łatwo wstawić inny obraz do obrazu:

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

// współrzędne mogą być ponownie podane w procentach
$blank->place($logo, '80%', '80%'); // wstawiamy w pobliżu prawego dolnego rogu

Alfabet jest respektowany podczas wstawiania, a my możemy wpływać na przezroczystość wstawianego obrazu (tworzymy znak wodny):

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

To API to prawdziwa radość z użytkowania!

Przegląd metod

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

Tworzy nowy obraz w kolorze rzeczywistym o podanych wymiarach. Domyślnym kolorem jest czarny.

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

Odczytuje obraz z pliku i zwraca jego typ w $detectedFormat.

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

Odczytuje obraz z ciągu znaków i zwraca jego typ w $detectedFormat.

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

Funkcja ta została zastąpiona przez klasę ImageColor, patrz 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 zgodnie z rozszerzeniem pliku.

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

Zwraca typ pliku obrazu, a w parametrach $width i $height także jego wymiary.

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

Zwraca typ obrazu z ciągu znaków, a w parametrach $width i $height również jego wymiary.

static isTypeSupported(int $type)bool

Określa, czy dany typ obrazu jest obsługiwany.

static getSupportedTypes(): array

Zwraca tablicę obsługiwanych typów obrazów (stałe ImageType::XXX).

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

Oblicza wymiary prostokąta otaczającego tekst o określonej czcionce i rozmiarze. Zwraca tablicę asocjacyjną zawierającą klucze left, top, width, height. Lewy margines może być ujemny, jeśli tekst zaczyna się od lewego nawisu.

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

Zwróć obraz zawierający affine-transformed src image używając opcjonalnego regionu przycinania (więcej).

affineMatrixConcat(array $m1, array $m2)array

Zwraca konkatenację dwóch macierzy przekształceń afinicznych, co jest przydatne, gdy do tego samego obrazu należy zastosować wiele przekształceń jednocześnie. (więcej)

affineMatrixGet(int $type, ?mixed $options=null)array

Zwraca macierz przekształcenia macierzy (więcej).

alphaBlending(bool $on): void

Umożliwia dwa różne tryby rysowania w obrazach truecolor. W trybie mieszania składowa kanału alfa koloru używanego we wszystkich funkcjach rysunkowych, takich jak setPixel(), określa, w jakim stopniu należy pozwolić, aby kolor podstawowy prześwitywał. W rezultacie w tym momencie istniejący kolor jest automatycznie mieszany z kolorem rysunku, a wynik jest zapisywany w obrazie. Powstały w ten sposób piksel jest nieprzezroczysty. W trybie nie mieszania, kolor kreskówki jest kopiowany dosłownie z informacją o kanale alfa i zastępowany pikselem docelowym. Tryb blend nie jest dostępny podczas rysowania na obrazkach paletowych. (więcej)

antialias(bool $on): void

Aktywuj rysowanie linii wygładzonych i wielokątów. Nie obsługuje kanałów alfa. Działa tylko z obrazami truecolor.

Użycie antyaliasowanego prymitywu z przezroczystym kolorem tła może skończyć się nieoczekiwanymi rezultatami. Metoda blend wykorzystuje kolor tła jak każdy inny kolor. (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 być wywołany, aby stworzyć 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ę tak samo jak colorAllocate() z dodaniem parametru przejrzystości $alpha. (więcej)

colorAt(int $x, int $y)int

Zwraca indeks koloru piksela w określonym miejscu obrazu. Jeśli obraz jest truecolor, funkcja zwraca wartość RGB tego piksela jako liczbę całkowitą. Użyj przesunięcia bitów i maskowania bitów, aby uzyskać dostęp do oddzielnych wartości dla składowej czerwonej, zielonej i niebieskiej: (więcej)

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

Zwraca indeks koloru w palecie obrazów, który jest „najbliższy“ określonej wartości RGB. „Odległość“ między pożądanym kolorem a każdym kolorem w palecie jest obliczana 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 obrazów, który jest „najbliższy“ podanej wartości RGB i poziomu $alpha. (więcej)

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

Uzyskaj indeks koloru, który ma odcień, biel i czerń najbliższe podanemu kolorowi. (więcej)

colorDeallocate(int $color)void

De-allocates a color previously assigned by colorAllocate() or colorAllocateAlpha(). (więcej)

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

Zwraca indeks określonego koloru w palecie obrazów. (więcej)

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

Zwraca indeks określonego koloru + alfa w palecie obrazów. (więcej)

colorMatch(Image $image2)void

Dopasowuje kolory palety do drugiego panelu. (więcej)

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

Zwraca indeks koloru dla żądanego koloru, albo dokładny kolor, albo najbliższą możliwą alternatywę. (więcej)

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

Zwraca indeks koloru dla żądanego koloru, albo dokładny kolor, albo najbliższą możliwą alternatywę. (więcej)

colorSet(int $index, int $red, int $green, int $blue)void

Ustawia określony indeks w palecie na określony kolor. (więcej)

colorsForIndex(int $index)array

Uzyskuje kolor określonego indeksu (więcej).

colorsTotal(): int

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

colorTransparent(?int $color=null)int

Uzyskuje lub ustawia kolor przezroczysty w obrazie. (więcej)

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

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

Wymaga obecności rozszerzenia Bundled GD, 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 fragment strony $src do obrazu rozpoczynającego się na współrzędnych $srcX, $srcY o szerokości $srcW i wysokości $srcH. Zdefiniowana część zostanie skopiowana do współrzędnych $dstX i $dstY. (więcej)

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

Kopiuje fragment strony $src do obrazu rozpoczynającego się na współrzędnych $srcX, $srcY o szerokości $srcW i wysokości $srcH. Zdefiniowana część zostanie skopiowana do współrzędnych $dstX i $dstY. (więcej)

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

Kopiuje fragment strony $src do obrazu rozpoczynającego się na współrzędnych $srcX, $srcY o szerokości $srcW i wysokości $srcH. Zdefiniowana część zostanie skopiowana na współrzędne $dstX i $dstY.

Funkcja ta jest identyczna jak copyMerge() z tym wyjątkiem, że zachowuje źródłowy odcień podczas scalania poprzez konwersję pikseli docelowych do skali szarości przed operacją kopiowania. (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 przy zmniejszaniu rozmiaru, obraz nadal zachowuje dużą wyrazistość.

Innymi słowy, copyResampled() pobiera prostokątny region z $src o szerokości $srcW i wysokości $srcH w pozycji ($srcX, $srcY) i umieszcza go w prostokątnym regionie obrazu o szerokości $dstW i wysokości $dstH w pozycji ($dstX, $dstY).

Jeśli współrzędne źródła i miejsca docelowego, szerokość i wysokość są różne, fragment obrazu jest odpowiednio rozciągany lub zmniejszany. Współrzędne odnoszą się do lewego górnego rogu. Funkcja ta może być używana do kopiowania obszarów na tym samym obrazie, ale jeśli obszary będą się nakładać, wyniki nie będą przewidywalne. (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 innego obrazu. Innymi słowy, copyResized() pobiera prostokątny region z $src o szerokości $srcW i wysokości $srcH w pozycji ($srcX, $srcY) i umieszcza go w prostokątnym regionie obrazu o szerokości $dstW ] i wysokości $dstH w pozycji ($dstX, $dstY).

Jeśli współrzędne źródła i miejsca docelowego, szerokość i wysokość są różne, fragment obrazu jest odpowiednio rozciągany lub zmniejszany. Współrzędne odnoszą się do lewego górnego rogu. Funkcja ta może być używana do kopiowania obszarów na tym samym obrazie, ale jeśli obszary będą się nakładać, wyniki nie będą przewidywalne. (więcej)

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

Przycina obraz do zadanego prostokątnego obszaru. Wymiary mogą być określone jako liczby całkowite w pikselach lub ciągi znaków w procentach (na przykład '50%').

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

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

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

Rysuje elipsę wyśrodkowaną na podanych współrzędnych. (więcej)

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

Wypełnia obszar zaczynający się na podanej współrzędnej (lewa górna to 0, 0) podaną $color. (więcej)

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

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

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

Rysuje elipsę wyśrodkowaną na podanych współrzędnych. (więcej)

filledPolygon(array $points, ImageColor $color)void

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

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

Tworzy prostokąt wypełniony $color na obrazie, zaczynając od $x1 i $y1, a kończąc na $x2 i $y2. Punkt 0, 0 to lewy górny róg obrazu. (więcej)

filledRectangleWH(int $left, int $top, int $width, int $height, ImageColor $color)void

Tworzy prostokąt wypełniony $color na obrazie, zaczynając od punktów $left i $top o szerokości $width i wysokości $height. Punkt 0, 0 to lewy górny róg obrazu.

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

Tworzy wypełnienie, którego kolor jest określony przez $border. Punktem początkowym wypełnienia jest $x, $y (lewa górna część to 0, 0), a obszar jest wypełniony kolorem $color. (więcej)

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

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

flip(int $mode): void

Odwraca obraz za pomocą podanego $mode. (więcej)

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

Wpisz tekst na obrazku. (więcej)

gammaCorrect(float $inputgamma, float $outputgamma)void

Zastosuj korekcję gamma do obrazu względem gamma wejściowego i wyjściowego. (więcej)

getClip(): array

Zwraca aktualny crop, czyli obszar, poza którym nie będą rysowane piksele. (więcej)

getHeight(): int

Zwraca wysokość obrazu.

getImageResource(): resource|GdImage

Zwraca oryginalny zasób.

getWidth(): int

Zwraca szerokość obrazu.

interlace(?int $interlace=null)int

Włącza lub wyłącza tryb przeplotu. Jeśli ustawiony jest tryb z przeplotem, a obraz jest zapisywany jako JPEG, zostanie on zapisany jako JPEG progresywny. (więcej)

isTrueColor(): bool

Określ, czy obraz jest truecolor (więcej).

layerEffect(int $effect)void

Ustaw flagę alfa blend, aby użyć efektów warstwowych. (więcej)

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

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

openPolygon(array $points, ImageColor $color)void

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

paletteCopy(Image $source)void

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

paletteToTrueColor(): void

Konwertuje obraz oparty na paletach na obraz w pełnym kolorze. (więcej)

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

Kopiuje stronę $image do obrazu na współrzędnych $left i $top. Współrzędne mogą być określone jako liczby całkowite w pikselach lub łańcuchy w procentach (na przykład '50%').

polygon(array $points, ImageColor $color)void

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

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

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

rectangleWH(int $left, int $top, int $width, int $height, ImageColor $color)void

Tworzy prostokąt o podanych współrzędnych.

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

Zmienia rozmiar obrazu, więcej informacji. Wymiary mogą być określone jako liczby całkowite w pikselach lub ciągi znaków w procentach (na przykład '50%').

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

Ustawia lub zwraca rozdzielczość obrazu w DPI (punkty na cal). Jeśli żaden z opcjonalnych parametrów nie zostanie określony, bieżąca rozdzielczość jest zwracana jako indeksowane pole. Jeśli określona jest tylko $resX, rozdzielczość pozioma i pionowa są ustawione na tę wartość. Jeśli oba opcjonalne parametry są określone, rozdzielczości pozioma i pionowa są ustawione na te wartości.

Rozdzielczość jest używana jako meta informacja tylko wtedy, gdy obrazy są odczytywane i zapisywane w formatach obsługujących ten rodzaj informacji (obecnie PNG i JPEG). Nie ma to wpływu na żadne operacje rysunkowe. Domyślna rozdzielczość nowych zdjęć to 96 DPI. (więcej)

rotate(float $angle, int $backgroundColor)Image

Obraca obraz przy użyciu określonej $angle w stopniach. Środek obrotu jest środkiem obrazu, a obrócony obraz może mieć inne wymiary niż obraz oryginalny. (więcej)

Wymaga obecności rozszerzenia Bundled GD, 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 jest oczywisty z rozszerzenia pliku, można go określić za pomocą jednej ze stałych ImageType.

saveAlpha(bool $saveflag)void

Ustawia flagę, aby zachować pełną informację o kanale alfa (w przeciwieństwie do przezroczystości monochromatycznej) podczas zapisywania obrazów PNG.

Alfablending musi być wyłączony (alphaBlending(false)), aby zachować kanał alfa w pierwszej kolejności. (więcej)

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

Skalowanie obrazu z wykorzystaniem podanego algorytmu interpolacji. (więcej)

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

Drukuje 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, który ma być używany we wszystkich funkcjach rysowania linii (na przykład line() i polygon()) podczas rysowania z użyciem specjalnych kolorów IMG_COLOR_BRUSHED lub IMG_COLOR_STYLEDBRUSHED. (więcej)

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

Ustawia aktualny crop, czyli obszar poza którym nie będą rysowane piksele. (więcej)

setInterpolation(int $method=IMG_BILINEAR_FIXED)void

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

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

Rysuje piksel na określonej współrzędnej. (więcej)

setStyle(array $style)void

Ustawia styl, który ma być używany przez wszystkie funkcje rysowania linii (na przykład line() i polygon()) podczas rysowania z kolorem specjalnym IMG_COLOR_STYLED lub linii obrazu z kolorem IMG_COLOR_STYLEDBRUSHED. (więcej)

setThickness(int $thickness)void

Ustawia grubość linii podczas rysowania prostokątów, wielokątów, łuków itp. Na stronie $thickness pikseli (więcej)

setTile(Image $tile)void

Ustawia obraz kafelka, który będzie używany we wszystkich funkcjach wypełniania regionów (na przykład fill() i filledPolygon()), gdy wypełniony jest specjalnym kolorem IMG_COLOR_TILED.

Kafelek jest obrazem używanym do wypełnienia regionu powtarzającym się wzorem. Jako kafelek można użyć dowolnego obrazu, a ustawiając indeks przezroczystego koloru obrazu kafelka za pomocą strony colorTransparent(), można stworzyć kafelek, w którym pewne części bazowego regionu będą prześwitywać. (więcej)

sharpen(): Image

Wyostrza obraz.

Wymaga obecności rozszerzenia Bundled GD, więc może nie działać wszędzie.

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

Zapisuje obraz w postaci ciągu znaków.

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 palety. (więcej)

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

Zapisuje podany tekst na obrazie. (więcej)