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