Praca z obrazami
Klasa Nette\Utils\Image ułatwia manipulowanie obrazami, takie jak zmiana rozmiaru, przycinanie, wyostrzanie, rysowanie czy łączenie wielu obrazów.
PHP posiada rozbudowany zestaw funkcji do manipulowania obrazami. Jednak ich API nie jest zbyt wygodne. To nie byłby Nette Framework, żeby nie wymyślić seksownego API.
Instalacja:
composer require nette/utils
Wszystkie przykłady zakładają, że alias został utworzony:
use Nette\Utils\Image;
use Nette\Utils\ImageColor;
use Nette\Utils\ImageType;
Tworzenie obrazu
Utwórz nowy obraz w kolorze rzeczywistym, na przykład o wymiarach 100×200:
$image = Image::fromBlank(100, 200);
Możesz opcjonalnie określić kolor tła (domyślnie jest to kolor czarny):
$image = Image::fromBlank(100, 200, ImageColor::rgb(125, 0, 0));
Albo załadować obraz z pliku:
$image = Image::fromFile('nette.jpg');
Zapisywanie obrazu
Obraz można zapisać do pliku:
$image->save('resampled.jpg');
Możemy określić jakość kompresji w zakresie 0..100 dla JPEG (domyślnie 85), WEBP (domyślnie 80) i AVIF (domyślnie 30) oraz 0..9 dla PNG (domyślnie 9):
$image->save('resampled.jpg', 80); // JPEG, jakość 80%
Jeśli format nie jest oczywisty na podstawie rozszerzenia pliku, można go określić za pomocą stałej:
$image->save('resampled.tmp', null, ImageType::JPEG);
Obraz może być zapisany do zmiennej zamiast na dysk:
$data = $image->toString(ImageType::JPEG, 80); // JPEG, qualita 80%
lub wysyłane bezpośrednio do przeglądarki z odpowiednim nagłówkiem HTTP Content-Type
:
// wysyła nagłówek Content-Type: image/png
$image->send(ImageType::PNG);
Formaty
Obsługiwane formaty to JPEG, PNG, GIF, WebP, AVIF i BMP. Muszą być one jednak również obsługiwane przez daną wersję PHP, co można zweryfikować za pomocą funkcji isTypeSupported(). Animacje nie są obsługiwane.
Formaty są reprezentowane przez stałe ImageType::JPEG
, ImageType::PNG
, ImageType::GIF
,
ImageType::WEBP
, ImageType::AVIF
i ImageType::BMP
.
$supported = Image::isTypeSupported(ImageType::JPEG);
Chcesz wykryć format obrazu podczas ładowania? Metoda zwraca go w drugim parametrze:
$image = Image::fromFile('nette.jpg', $type);
Rzeczywiste wykrywanie bez ładowania obrazu jest wykonywane przez Image::detectTypeFromFile()
.
Zmień rozmiar
Często wykonywaną operacją jest zmiana rozmiaru obrazu. Rzeczywiste wymiary są zwracane przez metody
getWidth()
i getHeight()
.
Metoda resize()
służy do zmiany rozmiaru obrazu tak, aby nie przekraczał on 500×300 pikseli (albo szerokość
będzie wynosiła dokładnie 500 px, albo wysokość dokładnie 300 px, jeden z wymiarów jest obliczany dla zachowania
proporcji):
$image->resize(500, 300);
Możliwe jest określenie tylko jednego wymiaru, a drugi zostanie obliczony:
$image->resize(500, null); // szerokość 500px, wysokość jest obliczana
$image->resize(null, 300); // szerokość obliczona, wysokość 300px
Każdy wymiar może być określony jako procent:
$image->resize('75%', 300); // 75% × 300px
Na zachowanie resize
mogą wpływać następujące objawy. Wszystkie poza Image::Stretch
zachowują
proporcje.
Flaga | Opis |
---|---|
Image::OrSmaller (domyślnie) |
wymiary wynikowe będą mniejsze lub równe żądanym wymiarom |
Image::OrBigger |
wypełnia (i ewentualnie przekracza w jednym wymiarze) obszar docelowy |
Image::Cover |
wypełnia obszar docelowy i przycina to, co go przekracza |
Image::ShrinkOnly |
tylko zmniejszanie (unikanie rozciągania małego obrazu) |
Image::Stretch |
nie zachowuj proporcji |
Flagi są podawane jako trzeci argument funkcji:
$image->resize(500, 300, Image::OrBigger);
Flagi mogą być łączone:
$image->resize(500, 300, Image::ShrinkOnly | Image::Stretch);
Obrazy można obrócić w pionie lub poziomie, nadając jednemu z wymiarów (lub obu) wartość ujemną:
$flipped = $image->resize(null, '-100%'); // przerzuć w pionie
$flipped = $image->resize('-100%', '-100%'); // obróć o 180°.
$flipped = $image->resize(-125, 500); // zmiana rozmiaru i odwrócenie w poziomie
Po zmniejszeniu obrazu można poprawić jego wygląd poprzez dokładne wyostrzenie:
$image->sharpen();
Uprawa
Do uprawy stosuje się metodę crop()
:
$image->crop($left, $top, $width, $height);
Podobnie jak w przypadku resize()
, wszystkie wartości mogą być podane w procentach. Procenty dla
$left
i $top
są obliczane z pozostałej przestrzeni, podobnie jak właściwość CSS
background-position
:
$image->crop('100%', '50%', '80%', '80%');
Obraz można również przyciąć automatycznie, na przykład przycinając czarne obramowania:
$image->cropAuto(IMG_CROP_BLACK);
Metoda cropAuto()
jest obiektowym zamiennikiem funkcji imagecropauto()
, więcej informacji można
znaleźć w jej dokumentacji.
Kolory
Metoda ImageColor::rgb()
umożliwia zdefiniowanie koloru przy użyciu wartości czerwonego, zielonego
i niebieskiego (RGB). Opcjonalnie można również określić wartość przezroczystości w zakresie od 0 (całkowicie
przezroczysty) do 1 (całkowicie nieprzezroczysty), podobnie jak w CSS.
$color = ImageColor::rgb(255, 0, 0); // Red
$transparentBlue = ImageColor::rgb(0, 0, 255, 0.5); // Semi-transparent blue
Metoda ImageColor::hex()
umożliwia zdefiniowanie koloru przy użyciu formatu szesnastkowego, podobnie jak w CSS.
Obsługuje formaty #rgb
, #rrggbb
, #rgba
i #rrggbbaa
:
$color = ImageColor::hex("#F00"); // Red
$transparentGreen = ImageColor::hex("#00FF0080"); // Semi-transparent green
Kolory mogą być używane w innych metodach, takich jak ellipse()
, fill()
, itp.
Rysowanie i edycja
Możesz rysować, możesz pisać, możesz używać wszystkich funkcji PHP do manipulacji obrazem, patrz Przegląd metod, ale w opakowaniu obiektowym:
$image->filledEllipse($centerX, $centerY, $width, $height, ImageColor::rgb(255, 0, 0));
Ponieważ funkcje PHP do rysowania prostokątów są niepraktyczne ze względu na konieczność określania współrzędnych,
klasa Image
oferuje ich zamienniki w postaci funkcji rectangleWH ( ) i filledRectangleWH().
Łączenie wielu obrazów
Możesz łatwo wstawić inny obraz do obrazu:
$logo = Image::fromFile('logo.png');
$blank = Image::fromBlank(320, 240, ImageColor::rgb(52, 132, 210));
// współrzędne mogą być ponownie podane w procentach
$blank->place($logo, '80%', '80%'); // wstawiamy w pobliżu prawego dolnego rogu
Alfabet jest respektowany podczas wstawiania, a my możemy wpływać na przezroczystość wstawianego obrazu (tworzymy znak wodny):
$blank->place($image, '80%', '80%', 25); // przezroczystość wynosi 25%
To API to prawdziwa radość z użytkowania!
Przegląd metod
static fromBlank(int $width, int $height, ?ImageColor $color=null): Image
Tworzy nowy obraz w kolorze rzeczywistym o podanych wymiarach. Domyślnym kolorem jest czarny.
static fromFile(string $file, int &$detectedFormat=null): Image
Odczytuje obraz z pliku i zwraca jego typ w $detectedFormat
.
static fromString(string $s, int &$detectedFormat=null): Image
Odczytuje obraz z ciągu znaków i zwraca jego typ w $detectedFormat
.
static rgb(int $red, int $green, int $blue, int $transparency=0): array
Funkcja ta została zastąpiona przez klasę ImageColor
, patrz kolory.
static typeToExtension(int $type): string
Zwraca rozszerzenie pliku dla podanego typu.
static typeToMimeType(int $type): string
Zwraca typ mime dla podanego typu.
static extensionToType(string $extension): int
Zwraca typ obrazu zgodnie z rozszerzeniem pliku.
static detectTypeFromFile(string $file, int &$width=null, int &$height=null): ?int
Zwraca typ pliku obrazu, a w parametrach $width
i $height
także jego
wymiary.
static detectTypeFromString(string $s, int &$width=null, int &$height=null): ?int
Zwraca typ obrazu z ciągu znaków, a w parametrach $width
i $height
również jego wymiary.
static isTypeSupported(int $type): bool
Określa, czy dany typ obrazu jest obsługiwany.
static getSupportedTypes(): array
Zwraca tablicę obsługiwanych typów obrazów (stałe ImageType::XXX
).
static calculateTextBox(string $text, string $fontFile, float $size, float $angle=0, array $options=[]): array
Oblicza wymiary prostokąta otaczającego tekst o określonej czcionce i rozmiarze. Zwraca tablicę asocjacyjną
zawierającą klucze left
, top
, width
, height
. Lewy margines może być
ujemny, jeśli tekst zaczyna się od lewego nawisu.
affine(array $affine, ?array $clip=null): Image
Zwróć obraz zawierający affine-transformed src image używając opcjonalnego regionu przycinania (więcej).
affineMatrixConcat(array $m1, array $m2): array
Zwraca konkatenację dwóch macierzy przekształceń afinicznych, co jest przydatne, gdy do tego samego obrazu należy zastosować wiele przekształceń jednocześnie. (więcej)
affineMatrixGet(int $type, ?mixed $options=null): array
Zwraca macierz przekształcenia macierzy (więcej).
alphaBlending(bool $on): void
Umożliwia dwa różne tryby rysowania w obrazach truecolor. W trybie mieszania składowa kanału alfa koloru używanego we
wszystkich funkcjach rysunkowych, takich jak setPixel()
, określa, w jakim stopniu należy pozwolić, aby kolor
podstawowy prześwitywał. W rezultacie w tym momencie istniejący kolor jest automatycznie mieszany z kolorem rysunku, a wynik
jest zapisywany w obrazie. Powstały w ten sposób piksel jest nieprzezroczysty. W trybie nie mieszania, kolor kreskówki jest
kopiowany dosłownie z informacją o kanale alfa i zastępowany pikselem docelowym. Tryb blend nie jest dostępny podczas
rysowania na obrazkach paletowych. (więcej)
antialias(bool $on): void
Aktywuj rysowanie linii wygładzonych i wielokątów. Nie obsługuje kanałów alfa. Działa tylko z obrazami truecolor.
Użycie antyaliasowanego prymitywu z przezroczystym kolorem tła może skończyć się nieoczekiwanymi rezultatami. Metoda blend wykorzystuje kolor tła jak każdy inny kolor. (więcej)
arc(int $centerX, int $centerY, int $width, int $height, int $startAngle, int $endAngle, ImageColor $color): void
Rysuje łuk okręgu o środku w podanych współrzędnych. (więcej)
colorAllocate(int $red, int $green, int $blue): int
Zwraca identyfikator koloru reprezentujący kolor złożony z podanych składowych RGB. Musi być wywołany, aby stworzyć każdy kolor, który ma być użyty w obrazie. (więcej)
colorAllocateAlpha(int $red, int $green, int $blue, int $alpha): int
Zachowuje się tak samo jak colorAllocate()
z dodaniem parametru przejrzystości $alpha
. (więcej)
colorAt(int $x, int $y): int
Zwraca indeks koloru piksela w określonym miejscu obrazu. Jeśli obraz jest truecolor, funkcja zwraca wartość RGB tego piksela jako liczbę całkowitą. Użyj przesunięcia bitów i maskowania bitów, aby uzyskać dostęp do oddzielnych wartości dla składowej czerwonej, zielonej i niebieskiej: (więcej)
colorClosest(int $red, int $green, int $blue): int
Zwraca indeks koloru w palecie obrazów, który jest „najbliższy“ określonej wartości RGB. „Odległość“ między pożądanym kolorem a każdym kolorem w palecie jest obliczana tak, jakby wartości RGB reprezentowały punkty w przestrzeni trójwymiarowej. (więcej)
colorClosestAlpha(int $red, int $green, int $blue, int $alpha): int
Zwraca indeks koloru w palecie obrazów, który jest „najbliższy“ podanej wartości RGB i poziomu $alpha
.
(więcej)
colorClosestHWB(int $red, int $green, int $blue): int
Uzyskaj indeks koloru, który ma odcień, biel i czerń najbliższe podanemu kolorowi. (więcej)
colorDeallocate(int $color): void
De-allocates a color previously assigned by colorAllocate()
or colorAllocateAlpha()
. (więcej)
colorExact(int $red, int $green, int $blue): int
Zwraca indeks określonego koloru w palecie obrazów. (więcej)
colorExactAlpha(int $red, int $green, int $blue, int $alpha): int
Zwraca indeks określonego koloru + alfa w palecie obrazów. (więcej)
colorMatch(Image $image2): void
Dopasowuje kolory palety do drugiego panelu. (więcej)
colorResolve(int $red, int $green, int $blue): int
Zwraca indeks koloru dla żądanego koloru, albo dokładny kolor, albo najbliższą możliwą alternatywę. (więcej)
colorResolveAlpha(int $red, int $green, int $blue, int $alpha): int
Zwraca indeks koloru dla żądanego koloru, albo dokładny kolor, albo najbliższą możliwą alternatywę. (więcej)
colorSet(int $index, int $red, int $green, int $blue): void
Ustawia określony indeks w palecie na określony kolor. (więcej)
colorsForIndex(int $index): array
Uzyskuje kolor określonego indeksu (więcej).
colorsTotal(): int
Zwraca liczbę kolorów w palecie obrazów. (więcej)
colorTransparent(?int $color=null): int
Uzyskuje lub ustawia kolor przezroczysty w obrazie. (więcej)
convolution(array $matrix, float $div, float $offset): void
Stosuje macierz konwolucji do obrazu, używając danego współczynnika i przesunięcia. (więcej)
Wymaga obecności rozszerzenia Bundled GD, więc może nie działać wszędzie.
copy(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH): void
Kopiuje fragment strony $src
do obrazu rozpoczynającego się na współrzędnych $srcX
,
$srcY
o szerokości $srcW
i wysokości $srcH
. Zdefiniowana część zostanie skopiowana
do współrzędnych $dstX
i $dstY
. (więcej)
copyMerge(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH, int $opacity): void
Kopiuje fragment strony $src
do obrazu rozpoczynającego się na współrzędnych $srcX
,
$srcY
o szerokości $srcW
i wysokości $srcH
. Zdefiniowana część zostanie skopiowana
do współrzędnych $dstX
i $dstY
. (więcej)
copyMergeGray(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH, int $opacity): void
Kopiuje fragment strony $src
do obrazu rozpoczynającego się na współrzędnych $srcX
,
$srcY
o szerokości $srcW
i wysokości $srcH
. Zdefiniowana część zostanie skopiowana
na współrzędne $dstX
i $dstY
.
Funkcja ta jest identyczna jak copyMerge()
z tym wyjątkiem, że zachowuje źródłowy odcień podczas scalania
poprzez konwersję pikseli docelowych do skali szarości przed operacją kopiowania. (więcej)
copyResampled(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $dstW, int $dstH, int $srcW, int $srcH): void
Kopiuje prostokątny fragment jednego obrazu do drugiego, płynnie interpolując wartości pikseli, dzięki czemu, zwłaszcza przy zmniejszaniu rozmiaru, obraz nadal zachowuje dużą wyrazistość.
Innymi słowy, copyResampled()
pobiera prostokątny region z $src
o szerokości $srcW
i wysokości $srcH
w pozycji ($srcX
, $srcY
) i umieszcza go w prostokątnym regionie
obrazu o szerokości $dstW
i wysokości $dstH
w pozycji ($dstX
, $dstY
).
Jeśli współrzędne źródła i miejsca docelowego, szerokość i wysokość są różne, fragment obrazu jest odpowiednio rozciągany lub zmniejszany. Współrzędne odnoszą się do lewego górnego rogu. Funkcja ta może być używana do kopiowania obszarów na tym samym obrazie, ale jeśli obszary będą się nakładać, wyniki nie będą przewidywalne. (więcej)
copyResized(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $dstW, int $dstH, int $srcW, int $srcH): void
Kopiuje prostokątny fragment jednego obrazu do innego obrazu. Innymi słowy, copyResized()
pobiera prostokątny
region z $src
o szerokości $srcW
i wysokości $srcH
w pozycji ($srcX
,
$srcY
) i umieszcza go w prostokątnym regionie obrazu o szerokości $dstW
] i wysokości
$dstH
w pozycji ($dstX
, $dstY
).
Jeśli współrzędne źródła i miejsca docelowego, szerokość i wysokość są różne, fragment obrazu jest odpowiednio rozciągany lub zmniejszany. Współrzędne odnoszą się do lewego górnego rogu. Funkcja ta może być używana do kopiowania obszarów na tym samym obrazie, ale jeśli obszary będą się nakładać, wyniki nie będą przewidywalne. (więcej)
crop(int|string $left, int|string $top, int|string $width, int|string $height): Image
Przycina obraz do zadanego prostokątnego obszaru. Wymiary mogą być określone jako liczby całkowite w pikselach lub ciągi
znaków w procentach (na przykład '50%'
).
cropAuto(int $mode=-1, float $threshold=.5, ?ImageColor $color=null): Image
Automatycznie przycina obraz zgodnie z podanym $mode
. (więcej)
ellipse(int $centerX, int $centerY, int $width, int $height, ImageColor $color): void
Rysuje elipsę wyśrodkowaną na podanych współrzędnych. (więcej)
fill(int $x, int $y, ImageColor $color): void
Wypełnia obszar zaczynający się na podanej współrzędnej (lewa górna to 0, 0) podaną $color
. (więcej)
filledArc(int $centerX, int $centerY, int $width, int $height, int $startAngle, int $endAngle, ImageColor $color, int $style): void
Rysuje częściowy łuk o środku w podanych współrzędnych. (więcej)
filledEllipse(int $centerX, int $centerY, int $width, int $height, ImageColor $color): void
Rysuje elipsę wyśrodkowaną na podanych współrzędnych. (więcej)
filledPolygon(array $points, ImageColor $color): void
Tworzy wypełniony wielokąt w obrazie. (więcej)
filledRectangle(int $x1, int $y1, int $x2, int $y2, ImageColor $color): void
Tworzy prostokąt wypełniony $color
na obrazie, zaczynając od $x1
i $y1
, a kończąc
na $x2
i $y2
. Punkt 0, 0 to lewy górny róg obrazu. (więcej)
filledRectangleWH(int $left, int $top, int $width, int $height, ImageColor $color): void
Tworzy prostokąt wypełniony $color
na obrazie, zaczynając od punktów $left
i $top
o szerokości $width
i wysokości $height
. Punkt 0, 0 to lewy górny róg obrazu.
fillToBorder(int $x, int $y, int $border, ImageColor $color): void
Tworzy wypełnienie, którego kolor jest określony przez $border
. Punktem początkowym wypełnienia jest
$x
, $y
(lewa górna część to 0, 0), a obszar jest wypełniony kolorem $color
. (więcej)
filter(int $filtertype, int …$args): void
Stosuje podany filtr $filtertype
do obrazu. (więcej)
flip(int $mode): void
Odwraca obraz za pomocą podanego $mode
. (więcej)
ftText(float $size, float $angle, int $x, int $y, ImageColor $color, string $fontFile, string $text, array $options=[]): array
Wpisz tekst na obrazku. (więcej)
gammaCorrect(float $inputgamma, float $outputgamma): void
Zastosuj korekcję gamma do obrazu względem gamma wejściowego i wyjściowego. (więcej)
getClip(): array
Zwraca aktualny crop, czyli obszar, poza którym nie będą rysowane piksele. (więcej)
getHeight(): int
Zwraca wysokość obrazu.
getImageResource(): resource|GdImage
Zwraca oryginalny zasób.
getWidth(): int
Zwraca szerokość obrazu.
interlace(?int $interlace=null): int
Włącza lub wyłącza tryb przeplotu. Jeśli ustawiony jest tryb z przeplotem, a obraz jest zapisywany jako JPEG, zostanie on zapisany jako JPEG progresywny. (więcej)
isTrueColor(): bool
Określ, czy obraz jest truecolor (więcej).
layerEffect(int $effect): void
Ustaw flagę alfa blend, aby użyć efektów warstwowych. (więcej)
line(int $x1, int $y1, int $x2, int $y2, ImageColor $color): void
Rysuje linię pomiędzy dwoma podanymi punktami. (więcej)
openPolygon(array $points, ImageColor $color): void
Rysuje na obrazie otwarty wielokąt. W odróżnieniu od polygon()
, między ostatnim a pierwszym punktem nie rysuje
się linii. (więcej)
paletteCopy(Image $source): void
Kopiuje paletę z $source
do obrazu. (więcej)
paletteToTrueColor(): void
Konwertuje obraz oparty na paletach na obraz w pełnym kolorze. (więcej)
place(Image $image, int|string $left=0, int|string $top=0, int $opacity=100): Image
Kopiuje stronę $image
do obrazu na współrzędnych $left
i $top
. Współrzędne mogą
być określone jako liczby całkowite w pikselach lub łańcuchy w procentach (na przykład '50%'
).
polygon(array $points, ImageColor $color): void
Tworzy wielokąt w obrazie. (więcej)
rectangle(int $x1, int $y1, int $x2, int $y2, ImageColor $color): void
Tworzy prostokąt na podanych współrzędnych (więcej).
rectangleWH(int $left, int $top, int $width, int $height, ImageColor $color): void
Tworzy prostokąt o podanych współrzędnych.
resize(int|string $width, int|string $height, int $flags=Image::OrSmaller): Image
Zmienia rozmiar obrazu, więcej informacji. Wymiary mogą być określone jako liczby
całkowite w pikselach lub ciągi znaków w procentach (na przykład '50%'
).
resolution(?int $resX=null, ?int $resY=null): mixed
Ustawia lub zwraca rozdzielczość obrazu w DPI (punkty na cal). Jeśli żaden z opcjonalnych parametrów nie zostanie
określony, bieżąca rozdzielczość jest zwracana jako indeksowane pole. Jeśli określona jest tylko $resX
,
rozdzielczość pozioma i pionowa są ustawione na tę wartość. Jeśli oba opcjonalne parametry są określone, rozdzielczości
pozioma i pionowa są ustawione na te wartości.
Rozdzielczość jest używana jako meta informacja tylko wtedy, gdy obrazy są odczytywane i zapisywane w formatach obsługujących ten rodzaj informacji (obecnie PNG i JPEG). Nie ma to wpływu na żadne operacje rysunkowe. Domyślna rozdzielczość nowych zdjęć to 96 DPI. (więcej)
rotate(float $angle, int $backgroundColor): Image
Obraca obraz przy użyciu określonej $angle
w stopniach. Środek obrotu jest środkiem obrazu, a obrócony obraz
może mieć inne wymiary niż obraz oryginalny. (więcej)
Wymaga obecności rozszerzenia Bundled GD, więc może nie działać wszędzie.
save(string $file, ?int $quality=null, ?int $type=null): void
Zapisuje obraz do pliku.
Jakość kompresji mieści się w zakresie 0..100 dla JPEG (domyślnie 85), WEBP (domyślnie 80) i AVIF (domyślnie 30) oraz
0..9 dla PNG (domyślnie 9). Jeśli typ nie jest oczywisty z rozszerzenia pliku, można go określić za pomocą jednej ze
stałych ImageType
.
saveAlpha(bool $saveflag): void
Ustawia flagę, aby zachować pełną informację o kanale alfa (w przeciwieństwie do przezroczystości monochromatycznej) podczas zapisywania obrazów PNG.
Alfablending musi być wyłączony (alphaBlending(false)
), aby zachować kanał alfa w pierwszej kolejności. (więcej)
scale(int $newWidth, int $newHeight=-1, int $mode=IMG_BILINEAR_FIXED): Image
Skalowanie obrazu z wykorzystaniem podanego algorytmu interpolacji. (więcej)
send(int $type=ImageType::JPEG, ?int $quality=null): void
Drukuje obraz do przeglądarki.
Jakość kompresji mieści się w zakresie 0..100 dla JPEG (domyślnie 85), WEBP (domyślnie 80) i AVIF (domyślnie 30) oraz 0..9 dla PNG (domyślnie 9).
setBrush(Image $brush): void
Ustawia obraz pędzla, który ma być używany we wszystkich funkcjach rysowania linii (na przykład line()
i
polygon()
) podczas rysowania z użyciem specjalnych kolorów IMG_COLOR_BRUSHED lub IMG_COLOR_STYLEDBRUSHED. (więcej)
setClip(int $x1, int $y1, int $x2, int $y2): void
Ustawia aktualny crop, czyli obszar poza którym nie będą rysowane piksele. (więcej)
setInterpolation(int $method=IMG_BILINEAR_FIXED): void
Ustawia metodę interpolacji, która wpływa na metody rotate()
i affine()
. (więcej)
setPixel(int $x, int $y, ImageColor $color): void
Rysuje piksel na określonej współrzędnej. (więcej)
setStyle(array $style): void
Ustawia styl, który ma być używany przez wszystkie funkcje rysowania linii (na przykład line()
i
polygon()
) podczas rysowania z kolorem specjalnym IMG_COLOR_STYLED lub linii obrazu z kolorem
IMG_COLOR_STYLEDBRUSHED. (więcej)
setThickness(int $thickness): void
Ustawia grubość linii podczas rysowania prostokątów, wielokątów, łuków itp. Na stronie $thickness
pikseli
(więcej)
setTile(Image $tile): void
Ustawia obraz kafelka, który będzie używany we wszystkich funkcjach wypełniania regionów (na przykład fill()
i filledPolygon()
), gdy wypełniony jest specjalnym kolorem IMG_COLOR_TILED.
Kafelek jest obrazem używanym do wypełnienia regionu powtarzającym się wzorem. Jako kafelek można użyć dowolnego obrazu,
a ustawiając indeks przezroczystego koloru obrazu kafelka za pomocą strony colorTransparent()
, można stworzyć
kafelek, w którym pewne części bazowego regionu będą prześwitywać. (więcej)
sharpen(): Image
Wyostrza obraz.
Wymaga obecności rozszerzenia Bundled GD, więc może nie działać wszędzie.
toString(int $type=ImageType::JPEG, ?int $quality=null): string
Zapisuje obraz w postaci ciągu znaków.
Jakość kompresji mieści się w zakresie 0..100 dla JPEG (domyślnie 85), WEBP (domyślnie 80) i AVIF (domyślnie 30) oraz 0..9 dla PNG (domyślnie 9).
trueColorToPalette(bool $dither, int $ncolors): void
Konwertuje obraz truecolor na obraz palety. (więcej)
ttfText(float $size, float $angle, int $x, int $y, ImageColor $color, string $fontFile, string $text, array $options=[]): array
Zapisuje podany tekst na obrazie. (więcej)