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)

wersja: 4.x