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() i 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)