Praca z obrazami

Klasa Nette\Utils\Image upraszcza manipulację obrazami, takimi jak zmiana rozmiaru, przycinanie, wyostrzanie, rysowanie lub łączenie wielu obrazów.

PHP dysponuje obszernym zestawem funkcji do manipulacji obrazami. Ale ich API nie jest zbyt wygodne. Nie byłby to Nette Framework, gdyby nie wymyślił seksownego API.

Instalacja:

composer require nette/utils

Wszystkie przykłady zakładają utworzony alias:

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

Tworzenie obrazu

Tworzymy nowy obraz true color, na przykład o wymiarach 100×200:

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

Opcjonalnie można określić kolor tła (domyślny to czarny):

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

Lub wczytamy 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ślna 85), WEBP (domyślna 80) i AVIF (domyślna 30) oraz 0..9 dla PNG (domyślna 9):

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

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

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

Obraz można zamiast na dysk zapisać do zmiennej:

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

lub wysłać 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, jednak muszą być one również obsługiwane przez Twoją wersję PHP, co sprawdzisz funkcją isTypeSupported(). Animacje nie są obsługiwane.

Format reprezentują stałe ImageType::JPEG, ImageType::PNG, ImageType::GIF, ImageType::WEBP, ImageType::AVIF i ImageType::BMP.

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

Potrzebujesz wykryć format obrazu podczas wczytywania? Metoda zwróci go w drugim parametrze:

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

Samo wykrywanie bez wczytywania obrazu wykonuje Image::detectTypeFromFile().

Zmiana rozmiaru

Częstą operacją jest zmiana wymiarów obrazu. Aktualne wymiary zwracają metody getWidth() i getHeight().

Do zmiany służy metoda resize(). Przykład proporcjonalnej zmiany rozmiaru tak, aby nie przekroczył wymiarów 500×300 pikseli (albo szerokość będzie dokładnie 500 px, albo wysokość będzie dokładnie 300 px, jeden z wymiarów zostanie obliczony tak, aby zachowany był stosunek stron):

$image->resize(500, 300);

Można określić tylko jeden wymiar, a drugi zostanie obliczony:

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

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

Każdy wymiar można podać również w procentach:

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

Zachowanie resize można wpłynąć za pomocą następujących flag. Wszystkie oprócz Image::Stretch zachowują stosunek stron.

Flaga Opis
Image::OrSmaller (domyślna) wynikowe wymiary będą mniejsze lub równe wymaganym wymiarom
Image::OrBigger wypełni (i ewentualnie przekroczy w jednym wymiarze) obszar docelowy
Image::Cover wypełni obszar docelowy i przytnie to, co przekroczy
Image::ShrinkOnly tylko zmniejszanie (zapobiegnie rozciągnięciu małego obrazu)
Image::Stretch nie zachowywać stosunku stron

Flagi podaje się jako trzeci argument funkcji:

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

Flagi można łączyć:

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

Obrazy można odwrócić pionowo lub poziomo, podając jeden z wymiarów (lub oba) jako liczbę ujemną:

$flipped = $image->resize(null, '-100%'); // odwrócenie pionowe

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

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

Po zmniejszeniu obrazu można poprawić jego wygląd delikatnym wyostrzeniem:

$image->sharpen();

Przycinanie

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

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

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

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

Obraz można również przyciąć automatycznie, na przykład przycięcie czarnych krawędzi:

$image->cropAuto(IMG_CROP_BLACK);

Metoda cropAuto() jest obiektowym zamiennikiem funkcji imagecropauto(), w jej dokumentacji znajdziesz więcej informacji.

Kolory

Metoda ImageColor::rgb() pozwala definiować kolor za pomocą wartości czerwonej, zielonej i niebieskiej (RGB). Opcjonalnie można również określić wartość przezroczystości w zakresie od 0 (całkowicie przezroczysty) do 1 (całkowicie nieprzezroczysty), czyli tak samo 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 definiować kolor za pomocą formatu heksadecymalnego, podobnie jak w CSS. Obsługuje formaty #rgb, #rrggbb, #rgba i #rrggbbaa:

$color = ImageColor::hex("#F00"); // Czerwony
$transparentGreen = ImageColor::hex("#00FF0080"); // Półprzezroczysta zielony

Kolory można użyć w innych metodach, takich jak ellipse(), fill() itp.

Rysowanie i edycja

Możesz rysować, możesz pisać, ale nie rwij liści. Do dyspozycji są wszystkie funkcje PHP do pracy z obrazami, zobacz Przegląd metod, ale w obiektowej szacie:

$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 określenie współrzędnych, klasa Image oferuje ich zamienniki w postaci funkcji rectangleWH()filledRectangleWH().

Łączenie wielu obrazów

Do obrazu można łatwo wstawić inny obraz:

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

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

Podczas wstawiania respektowany jest kanał alfa, ponadto możemy wpłynąć na przezroczystość wstawianego obrazu (tworzymy tzw. znak wodny):

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

Takie API to prawdziwa przyjemność używać!

Przegląd metod

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

Tworzy nowy obraz true color o podanych wymiarach. Domyślny kolor to czarny.

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

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

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

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

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 danego typu.

static typeToMimeType (int $type)string

Zwraca typ mime dla danego 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 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 także jego wymiary.

static isTypeSupported (int $type)bool

Sprawdza, czy obsługiwany jest dany typ obrazu.

static getSupportedTypes(): array

Zwraca tablicę obsługiwanych typów obrazu.

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

Oblicza wymiary prostokąta, który otacza tekst w określonej czcionce i rozmiarze. Zwraca tablicę asocjacyjną zawierającą klucze left, top, width, height. Lewa krawędź może być ujemna, jeśli tekst zaczyna się od lewego podcięcia.

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

Zwraca obraz zawierający afinicznie przekształcony obraz src przy użyciu opcjonalnego obszaru przycinania. (więcej).

affineMatrixConcat (array $m1, array $m2)array

Zwraca konkatenację dwóch macierzy transformacji afinicznej, co jest przydatne, jeśli do tego samego obrazu należy zastosować jednocześnie wiele transformacji. (więcej)

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

Zwraca macierz transformacji afinicznej. (więcej)

alphaBlending (bool $on)void

Umożliwia dwa różne tryby rysowania w obrazach truecolor. W trybie mieszania składnik kanału alfa koloru używanego we wszystkich funkcjach rysowania, takich jak setPixel(), określa, w jakim stopniu kolor podstawowy powinien być widoczny. W rezultacie istniejący kolor w tym punkcie jest automatycznie mieszany z kolorem rysowanym, a wynik jest zapisywany w obrazie. Wynikowy piksel jest nieprzezroczysty. W trybie bez mieszania rysowany kolor jest kopiowany dosłownie wraz z informacjami o kanale alfa i zastępuje piksel docelowy. Tryb mieszania nie jest dostępny podczas rysowania na obrazach paletowych. (więcej)

antialias (bool $on): void

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

Używanie wygładzonych prymitywów z przezroczystym kolorem tła może prowadzić do nieoczekiwanych wyników. Metoda mieszania używa koloru tła tak jak wszystkich innych kolorów. (więcej)

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

Rysuje łuk koła ze środkiem 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ładników RGB. Musi być 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

Działa tak samo jak colorAllocate() z dodaniem parametru przezroczystości $alpha. (więcej)

colorAt (int $x, int $y)int

Zwraca indeks koloru piksela w określonym miejscu obrazu. Jeśli obraz jest typu truecolor, funkcja ta zwraca wartość RGB tego piksela jako liczbę całkowitą. Użyj przesunięcia bitowego i maskowania bitowego, aby uzyskać dostęp do poszczególnych wartości składowych czerwonej, zielonej i niebieskiej: (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 żą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 obrazu, który jest „najbliższy” podanej wartości RGB i poziomowi $alpha. (więcej)

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

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

colorDeallocate (int $color)void

Dealokuje kolor wcześniej przydzielony za pomocą colorAllocate() lub colorAllocateAlpha(). (więcej)

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

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

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

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

colorMatch (Image $image2)void

Dopasowuje kolory palety do drugiego obrazu. (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

Pobiera kolor dla określonego indeksu. (więcej)

colorsTotal(): int

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

colorTransparent (?int $color=null)int

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

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

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

Wymaga obecności 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 do obrazu zaczynając od współrzędnych $srcX, $srcY o szerokości $srcW i wysokości $srcH. Zdefiniowana część zostanie skopiowana 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 do obrazu zaczynając od współrzędnych $srcX, $srcY o szerokości $srcW i wysokości $srcH. Zdefiniowana część zostanie skopiowana 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 do obrazu zaczynając od współrzędnych $srcX, $srcY o szerokości $srcW i wysokości $srcH. Zdefiniowana część zostanie skopiowana na współrzędne $dstX i $dstY.

Ta funkcja jest identyczna z copyMerge() z tą różnicą, że podczas łączenia zachowuje odcień źródła poprzez konwersję pikseli docelowych na skalę 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ątną część jednego obrazu do drugiego obrazu, płynnie interpolując wartości pikseli, dzięki czemu zwłaszcza zmniejszenie rozmiaru obrazu nadal zachowuje dużą klarowność.

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

Jeśli współrzędne źródłowe i docelowe, szerokość i wysokość różnią się, zostanie wykonane odpowiednie rozciągnięcie lub zmniejszenie fragmentu obrazu. Współrzędne odnoszą się do lewego górnego rogu. Ta funkcja może być używana do kopiowania obszarów w tym samym obrazie, ale jeśli obszary się pokrywają, 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ątną część jednego obrazu do innego obrazu. Innymi słowy, copyResized() pobiera prostokątny obszar z $src o szerokości $srcW i wysokości $srcH w pozycji ($srcX, $srcY) i umieszcza go w prostokątnym obszarze obrazu o szerokości $dstW i wysokości $dstH w pozycji ($dstX, $dstY).

Jeśli współrzędne źródłowe i docelowe, szerokość i wysokość różnią się, zostanie wykonane odpowiednie rozciągnięcie lub zmniejszenie fragmentu obrazu. Współrzędne odnoszą się do lewego górnego rogu. Ta funkcja może być używana do kopiowania obszarów w tym samym obrazie, ale jeśli obszary się pokrywają, wyniki nie będą przewidywalne. (więcej)

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

Przycina obraz do podanego prostokątnego obszaru. Wymiary można podawać 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ę ze środkiem w podanych współrzędnych. (więcej)

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

Wypełnia obszar zaczynając od podanych współrzędnych (lewy górny róg to 0, 0) podanym kolorem $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 ze środkiem w podanych współrzędnych. (więcej)

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

Rysuje wypełnioną elipsę ze środkiem 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 prostokąt wypełniony kolorem $color w obrazie, zaczynając od punktu $x1 & $y1 i kończąc na punkcie $x2 & $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 kolorem $color w obrazie, zaczynając od punktu $left & $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

Rysuje wypełnienie, którego kolor krawędzi jest zdefiniowany za pomocą $border. Punktem początkowym wypełnienia jest $x, $y (lewy górny róg to 0, 0), a obszar jest wypełniany 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

Wpisuje tekst do obrazu. (więcej)

gammaCorrect (float $inputgamma, float $outputgamma)void

Stosuje korekcję gamma do obrazu względem wejściowej i wyjściowej wartości gamma. (więcej)

getClip(): array

Zwraca bieżący obszar przycinania, tj. obszar, poza którym żadne piksele nie będą rysowane. (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 tryb przeplotu jest ustawiony, a obraz jest zapisywany jako JPEG, zostanie zapisany jako progresywny JPEG. (więcej)

isTrueColor(): bool

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

layerEffect (int $effect)void

Ustaw flagę mieszania alfa, aby używać efektów warstw. (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 na obrazie otwarty wielokąt. W przeciwieństwie do polygon(), między ostatnim a pierwszym punktem nie jest rysowana żadna linia. (więcej)

paletteCopy (Image $source)void

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

paletteToTrueColor(): void

Konwertuje obraz oparty na palecie na obraz pełnokolorowy (truecolor). (więcej)

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

Kopiuje $image do obrazu na współrzędne $left i $top. Współrzędne można podawać jako liczby całkowite w pikselach lub ciągi znaków w procentach (na przykład '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 $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 można podawać 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 jest podany, bieżąca rozdzielczość jest zwracana jako tablica indeksowana. Jeśli podano tylko $resX, rozdzielczość pozioma i pionowa są ustawiane na tę wartość. Jeśli podano oba opcjonalne parametry, rozdzielczość pozioma i pionowa są ustawiane na te wartości.

Rozdzielczość jest używana tylko jako meta informacja, 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 rysowania. Domyślna rozdzielczość nowych obrazów to 96 DPI. (więcej)

rotate (float $angle, int $backgroundColor)Image

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

Wymaga obecności 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 jest 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ę określającą, czy podczas zapisywania obrazów PNG zachować pełne informacje o kanale alfa (w przeciwieństwie do przezroczystości jednokolorowej).

Mieszanie alfa musi być wyłączone (alphaBlending(false)), aby kanał alfa został zachowany w pierwszej kolejności. (więcej)

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

Skaluje obraz przy użyciu podanego algorytmu interpolacji. (więcej)

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

Wysyła obraz do przeglądarki.

Jakość kompresji jest 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 będzie używany we wszystkich funkcjach rysowania linii (np. line() i polygon()) podczas rysowania specjalnymi kolorami IMG_COLOR_BRUSHED lub IMG_COLOR_STYLEDBRUSHED. (więcej)

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

Ustawia bieżący obszar przycinania, tj. obszar, poza którym żadne piksele nie będą rysowane. (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 podanych współrzędnych. (więcej)

setStyle (array $style)void

Ustawia styl, który ma być używany przez wszystkie funkcje rysowania linii (np. line() i polygon()) podczas rysowania specjalnym kolorem IMG_COLOR_STYLED lub linii obrazów 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 $thickness pikseli. (więcej)

setTile (Image $tile)void

Ustawia obraz kafelka, który będzie używany we wszystkich funkcjach wypełniania regionów (np. fill() i filledPolygon()) podczas wypełniania specjalnym kolorem IMG_COLOR_TILED.

Kafelek to obraz używany do wypełniania obszaru powtarzającym się wzorem. Dowolny obraz może być użyty jako kafelek, a ustawienie przezroczystego indeksu koloru obrazu kafelka za pomocą colorTransparent() pozwala utworzyć kafelek, w którym pewne części podległego obszaru będą prześwitywać. (więcej)

sharpen(): Image

Wyostrza obraz.

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

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

Zapisuje obraz do ciągu znaków.

Jakość kompresji jest 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

Wypisuje podany tekst do obrazu. (więcej)

wersja: 4.0