Nette Documentation Preview

syntax
Робота із зображеннями
**********************

.[perex]
Клас [api:Nette\Utils\Image] дає змогу легко маніпулювати зображеннями, наприклад, змінювати розмір, обрізати, підвищувати різкість, малювати або з'єднувати кілька зображень.


PHP має великий набір функцій для роботи із зображеннями. Але їхній API не дуже зручний. Це був би не Nette Framework, якби не придумали сексуальний API.

Встановлення:

```shell
composer require nette/utils
```

У всіх прикладах передбачається, що псевдонім уже створено:

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


Створення зображення .[#toc-creating-an-image]
==============================================

Створіть нове істинно кольорове зображення, наприклад, розміром 100×200:

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

За бажанням можна вказати колір фону (за замовчуванням чорний):

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

Або завантажте зображення з файлу:

```php
$image = Image::fromFile('nette.jpg');
```


Збереження зображення .[#toc-save-the-image]
============================================

Зображення можна зберегти у файл:

```php
$image->save('resampled.jpg');
```

Ми можемо вказати якість стиснення в діапазоні 0...100 для JPEG (за замовчуванням 85), WEBP (за замовчуванням 80) і AVIF (за замовчуванням 30) та 0...9 для PNG (за замовчуванням 9):

```php
$image->save('resampled.jpg', 80); // JPEG, 80% якості
```

Якщо формат не очевидний з розширення файлу, його можна вказати за допомогою [константи |#Formats]:

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

Зображення може бути записано не на диск, а у змінну:

```php
$data = $image->toString(ImageType::JPEG, 80); // JPEG, 80% якості
```

або надсилається безпосередньо в браузер із відповідним HTTP-заголовком `Content-Type`:

```php
// відправляє заголовок Content-Type: image/png
$image->send(ImageType::PNG);
```


Формати .[#toc-formats]
=======================

Підтримуються формати JPEG, PNG, GIF, WebP, AVIF і BMP. Однак вони також повинні підтримуватися вашою версією PHP, що можна перевірити за допомогою функції [isTypeSupported( |#isTypeSupported()] ). Анімація не підтримується.

Формати представлені константами `ImageType::JPEG`, `ImageType::PNG`, `ImageType::GIF`, `ImageType::WEBP`, `ImageType::AVIF` і `ImageType::BMP`.

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

Потрібно визначити формат зображення при завантаженні? Метод повертає його у другому параметрі:

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

Власне визначення без завантаження зображення виконується за допомогою `Image::detectTypeFromFile()`.


Змінити розмір .[#toc-image-resize]
===================================

Частою операцією є зміна розміру зображення. Фактичні розміри повертаються методами `getWidth()` та `getHeight()`.

Метод `resize()` використовується для зміни розміру зображення так, щоб воно не перевищувало 500x300 пікселів (або ширина буде рівно 500 px, або висота рівно 300 px, один із розмірів обчислюється для збереження співвідношення сторін):

```php
$image->resize(500, 300);
```

Можна вказати тільки один вимір, а інший буде розраховано:

```php
$image->resize(500, null); // ширина 500px, висота розраховується

$image->resize(null, 300); // ширина розрахована, висота 300px
```

Будь-який вимір може бути вказано у відсотках:

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

На поведінку `resize` можуть впливати такі симптоми. Усі, крім `Image::Stretch`, зберігають співвідношення сторін.

|---------------------------------------------------------------------------------------
| Прапор | Опис
|---------------------------------------------------------------------------------------
| `Image::OrSmaller` (за замовчуванням)| результуючі розміри будуть менші або дорівнювати запитуваним розмірам.
| `Image::OrBigger` | заповнює (і, можливо, перевищує в одному вимірі) цільову область
| `Image::Cover` | заповнює цільову область і обрізає те, що виходить за її межі.
| `Image::ShrinkOnly` | тільки зменшення (дозволяє уникнути розтягування маленького зображення)
| `Image::Stretch` | не зберігати співвідношення сторін


Прапори передаються як третій аргумент функції:

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

Прапори можна комбінувати:

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

Зображення можна перевернути по вертикалі або горизонталі, вказавши один із розмірів (або обидва) як від'ємне число:

```php
$flipped = $image->resize(null, '-100%'); // перевернемо вертикально

$flipped = $image->resize('-100%', '-100%'); // повертаємо на 180

$flipped = $image->resize(-125, 500); // змінити розмір та перевернути по горизонталі
```

Після зменшення зображення можна поліпшити його зовнішній вигляд за допомогою тонкого налаштування різкості:

```php
$image->sharpen();
```


Рослинництво .[#toc-cropping]
=============================

Для обробітку використовується метод `crop()`:

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

Як і у випадку з `resize()`, усі значення можуть бути представлені у відсотках. Відсотки для `$left` і `$top` розраховуються з простору, що залишився, аналогічно властивості CSS `background-position`:

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

[* crop.svg *]


Зображення можна також автоматично обрізати, наприклад, обрізати чорні межі:

```php
$image->cropAuto(IMG_CROP_BLACK);
```

Метод `cropAuto()` є об'єктною заміною функції `imagecropauto()`, більш детальну інформацію див. у [документації до неї |https://www.php.net/manual/en/function.imagecropauto].


Кольори .[#toc-colors]
======================

Метод `ImageColor::rgb()` дозволяє визначити колір за допомогою значень червоного, зеленого та синього (RGB). За бажанням, ви також можете вказати значення прозорості в діапазоні від 0 (повністю прозорий) до 1 (повністю непрозорий), так само, як і в CSS.

```php
$color = ImageColor::rgb(255, 0, 0); // Red
$transparentBlue = ImageColor::rgb(0, 0, 255, 0.5); // Semi-transparent blue
```

Метод `ImageColor::hex()` дозволяє визначити колір за допомогою шістнадцяткового формату, подібно до CSS. Він підтримує формати `#rgb`, `#rrggbb`, `#rgba` і `#rrggbbaa`:

```php
$color = ImageColor::hex("#F00"); // Red
$transparentGreen = ImageColor::hex("#00FF0080"); // Semi-transparent green
```

Кольори можна використовувати і в інших методах, таких як `ellipse()`, `fill()` тощо.


Малювання та редагування .[#toc-drawing-and-editing]
====================================================

Ви можете малювати, можете писати, можете використовувати всі функції PHP для маніпулювання зображеннями, див. [Огляд методів |#Overview of methods], але в об'єктно-орієнтованій обгортці:

```php
$image->filledEllipse($centerX, $centerY, $width, $height, ImageColor::rgb(255, 0, 0));
```

Оскільки функції PHP для малювання прямокутників непрактичні через необхідність вказувати координати, клас `Image` пропонує їх заміну у вигляді функцій [rectangleWH( |#rectangleWH()] ) і [filledRectangleWH( |#filledRectangleWH()]).


Об'єднання декількох зображень .[#toc-merge-multiple-images]
============================================================

Ви можете легко вставити інше зображення у фотографію:

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

// координати можуть бути знову задані у відсотках
$blank->place($logo, '80%', '80%'); // вставте в правий нижній кут
```

Альфаканал дотримується під час вставки, і ми можемо впливати на прозорість вставленого зображення (ми створюємо водяний знак):

```php
$blank->place($image, '80%', '80%', 25); // прозорість становить 25%
```

Цей API - справжнє задоволення від використання!


Огляд методів .[#toc-overview-of-methods]
=========================================


static fromBlank(int $width, int $height, ?ImageColor $color=null): Image .[method]
-----------------------------------------------------------------------------------
Створює нове істинно кольорове зображення заданих розмірів. За замовчуванням використовується чорний колір.


static fromFile(string $file, int &$detectedFormat=null): Image .[method]
-------------------------------------------------------------------------
Читає зображення з файлу і повертає його [тип |#Formats] в `$detectedFormat`.


static fromString(string $s, int &$detectedFormat=null): Image .[method]
------------------------------------------------------------------------
Читає зображення з рядка і повертає його [тип |#Formats] в `$detectedFormat`.


static rgb(int $red, int $green, int $blue, int $transparency=0): array .[method][deprecated]
---------------------------------------------------------------------------------------------
Ця функція була замінена на клас `ImageColor`, див. [кольори |#Colors].


static typeToExtension(int $type): string .[method]
---------------------------------------------------
Повертає розширення файлу для заданого [типу |#Formats].


static typeToMimeType(int $type): string .[method]
--------------------------------------------------
Повертає тип mime для заданого [типу |#Formats].


static extensionToType(string $extension): int .[method]
--------------------------------------------------------
Повертає [тип |#Formats] зображення відповідно до розширення файлу.


static detectTypeFromFile(string $file, int &$width=null, int &$height=null): ?int .[method]
--------------------------------------------------------------------------------------------
Повертає [тип |#Formats] файлу зображення, а в параметрах `$width` та `$height` також його розміри.


static detectTypeFromString(string $s, int &$width=null, int &$height=null): ?int .[method]
-------------------------------------------------------------------------------------------
Повертає [тип |#Formats] зображення з рядка, а в параметрах `$width` та `$height` також його розміри.


static isTypeSupported(int $type): bool .[method]
-------------------------------------------------
Визначає, чи підтримується даний [тип |#Formats] зображення.


static getSupportedTypes(): array .[method]{data-version:4.0.4}
---------------------------------------------------------------
Повертає масив підтримуваних типів зображень (константи `ImageType::XXX`).


static calculateTextBox(string $text, string $fontFile, float $size, float $angle=0, array $options=[]): array .[method]
------------------------------------------------------------------------------------------------------------------------
Обчислює розміри прямокутника, який охоплює текст заданого шрифту та розміру. Повертає асоціативний масив, що містить ключі `left`, `top`, `width`, `height`. Ліве поле може бути від'ємним, якщо текст починається з лівого відступу.


affine(array $affine, ?array $clip=null): Image .[method]
---------------------------------------------------------
Повертає зображення, що містить афінно-трансформоване зображення src з використанням необов'язкової області обрізання. ([докладніше |https://www.php.net/manual/en/function.imageaffine]).


affineMatrixConcat(array $m1, array $m2): array .[method]
---------------------------------------------------------
Повертає конкатенацію двох матриць афінного перетворення, що корисно, якщо до одного зображення необхідно застосувати одразу кілька перетворень. ([докладніше |https://www.php.net/manual/en/function.imageaffinematrixconcat])


affineMatrixGet(int $type, ?mixed $options=null): array .[method]
-----------------------------------------------------------------
Повертає матрицю перетворення матриці. ([докладніше |https://www.php.net/manual/en/function.imageaffinematrixget])


alphaBlending(bool $on): void .[method]
---------------------------------------
Дозволяє використовувати два різні режими малювання в триколірних зображеннях. У режимі накладення компонент альфа-каналу кольору, який використовується у всіх функціях малювання, таких як `setPixel()`, визначає, якою мірою базовий колір повинен просвічувати. У результаті в цей момент наявний колір автоматично змішується з кольором малюнка, і результат зберігається в зображенні. У результаті піксель стає непрозорим. У режимі без змішування колір мультфільму копіюється дослівно з інформацією альфа-каналу і замінюється на цільовий піксель. Режим накладення недоступний під час малювання на зображеннях палітри. ([докладніше |https://www.php.net/manual/en/function.imagealphablending])


antialias(bool $on): void .[method]
-----------------------------------
Активація малювання згладжених ліній і багатокутників. Не підтримує альфа-канали. Працює тільки з триколірними зображеннями.

Використання згладженого примітиву з прозорим кольором фону може призвести до несподіваних результатів. Метод змішування використовує колір фону як будь-який інший колір. ([докладніше |https://www.php.net/manual/en/function.imageantialias])


arc(int $centerX, int $centerY, int $width, int $height, int $startAngle, int $endAngle, ImageColor $color): void .[method]
---------------------------------------------------------------------------------------------------------------------------
Малює дугу кола з центром у заданих координатах. ([докладніше |https://www.php.net/manual/en/function.imagearc])


colorAllocate(int $red, int $green, int $blue): int .[method]
-------------------------------------------------------------
Повертає ідентифікатор кольору, що представляє колір, який складається із заданих компонентів RGB. Повинен бути викликаний для створення кожного кольору, який буде використовуватися в зображенні. ([докладніше |https://www.php.net/manual/en/function.imagecolorallocate])


colorAllocateAlpha(int $red, int $green, int $blue, int $alpha): int .[method]
------------------------------------------------------------------------------
Діє так само, як і `colorAllocate()`, з додаванням параметра прозорості `$alpha`. ([докладніше |https://www.php.net/manual/en/function.imagecolorallocatealpha])


colorAt(int $x, int $y): int .[method]
--------------------------------------
Повертає індекс кольору пікселя у вказаному місці зображення. Якщо зображення є truecolor, ця функція повертає значення RGB для даного пікселя у вигляді цілого числа. Використовуйте зсув бітів і бітову маску для доступу до окремих значень для червоного, зеленого і синього компонентів. ([докладніше |https://www.php.net/manual/en/function.imagecolorat])


colorClosest(int $red, int $green, int $blue): int .[method]
------------------------------------------------------------
Повертає індекс кольору в палітрі зображення, який "найближче" до вказаного значення RGB. Відстань" між бажаним кольором і кожним кольором у палітрі розраховується так, як якщо б значення RGB були точками в тривимірному просторі. ([докладніше |https://www.php.net/manual/en/function.imagecolorclosest])


colorClosestAlpha(int $red, int $green, int $blue, int $alpha): int .[method]
-----------------------------------------------------------------------------
Повертає індекс кольору в палітрі зображень, який "найближче" до вказаного значення RGB і рівня `$alpha`. ([докладніше |https://www.php.net/manual/en/function.imagecolorclosestalpha])


colorClosestHWB(int $red, int $green, int $blue): int .[method]
---------------------------------------------------------------
Отримати індекс кольору, який має відтінок, білий і чорний кольори, найближчі до заданого кольору. ([докладніше |https://www.php.net/manual/en/function.imagecolorclosesthwb])


colorDeallocate(int $color): void .[method]
-------------------------------------------
Видаляє колір, раніше призначений за допомогою `colorAllocate()` або `colorAllocateAlpha()`. ([докладніше |https://www.php.net/manual/en/function.imagecolordeallocate])


colorExact(int $red, int $green, int $blue): int .[method]
----------------------------------------------------------
Повертає індекс зазначеного кольору в палітрі зображення. ([докладніше |https://www.php.net/manual/en/function.imagecolorexact])


colorExactAlpha(int $red, int $green, int $blue, int $alpha): int .[method]
---------------------------------------------------------------------------
Повертає індекс зазначеного кольору + альфа в палітрі зображень. ([докладніше |https://www.php.net/manual/en/function.imagecolorexactalpha])


colorMatch(Image $image2): void .[method]
-----------------------------------------
Поєднує кольори палітри з кольорами іншої панелі. ([докладніше |https://www.php.net/manual/en/function.imagecolormatch])


colorResolve(int $red, int $green, int $blue): int .[method]
------------------------------------------------------------
Повертає індекс кольору для бажаного кольору, або точний колір, або найближчий можливий альтернативний. ([докладніше |https://www.php.net/manual/en/function.imagecolorresolve])


colorResolveAlpha(int $red, int $green, int $blue, int $alpha): int .[method]
-----------------------------------------------------------------------------
Повертає індекс кольору для бажаного кольору, або точний колір, або найближчий можливий альтернативний. ([докладніше |https://www.php.net/manual/en/function.imagecolorresolvealpha])


colorSet(int $index, int $red, int $green, int $blue): void .[method]
---------------------------------------------------------------------
Встановлює вказаний індекс у палітрі на вказаний колір. ([докладніше |https://www.php.net/manual/en/function.imagecolorset])


colorsForIndex(int $index): array .[method]
-------------------------------------------
Отримує колір зазначеного індексу. ([докладніше |https://www.php.net/manual/en/function.imagecolorsforindex])


colorsTotal(): int .[method]
----------------------------
Повертає кількість кольорів у палітрі зображення. ([докладніше |https://www.php.net/manual/en/function.imagecolorstotal])


colorTransparent(?int $color=null): int .[method]
-------------------------------------------------
Отримує або встановлює прозорий колір зображення. ([докладніше |https://www.php.net/manual/en/function.imagecolortransparent])


convolution(array $matrix, float $div, float $offset): void .[method]
---------------------------------------------------------------------
Застосовує матрицю згортки до зображення, використовуючи заданий коефіцієнт і зміщення. ([докладніше |https://www.php.net/manual/en/function.imageconvolution])

.[note]
Вимагає наявності *Bundled GD extension*, тому може працювати не скрізь.


copy(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH): void .[method]
--------------------------------------------------------------------------------------------------
Копіює частину `$src` у зображення, що починається в координатах `$srcX`, `$srcY` з шириною `$srcW` і висотою `$srcH`. Певна частина буде скопійована в координати `$dstX` і `$dstY`. ([докладніше |https://www.php.net/manual/en/function.imagecopy])


copyMerge(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH, int $opacity): void .[method]
---------------------------------------------------------------------------------------------------------------------
Копіює частину `$src` у зображення, що починається в координатах `$srcX`, `$srcY` з шириною `$srcW` і висотою `$srcH`. Певна частина буде скопійована в координати `$dstX` і `$dstY`. ([докладніше |https://www.php.net/manual/en/function.imagecopymerge])


copyMergeGray(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH, int $opacity): void .[method]
-------------------------------------------------------------------------------------------------------------------------
Копіює частину `$src` у зображення, що починається в координатах `$srcX`, `$srcY` з шириною `$srcW` і висотою `$srcH`. Певна частина буде скопійована в координати `$dstX` і `$dstY`.

Ця функція ідентична `copyMerge()`, за винятком того, що вона зберігає вихідний відтінок під час об'єднання, перетворюючи цільові пікселі у відтінки сірого перед операцією копіювання. ([докладніше |https://www.php.net/manual/en/function.imagecopymergegray])


copyResampled(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $dstW, int $dstH, int $srcW, int $srcH): void .[method]
---------------------------------------------------------------------------------------------------------------------------------
Копіює прямокутну частину одного зображення в інше зображення, плавно інтерполюючи значення пікселів так, щоб при зменшенні розміру зображення зберігало високу чіткість.

Іншими словами, `copyResampled()` бере прямокутну область з `$src` шириною `$srcW` і висотою `$srcH` у позиції (`$srcX`, `$srcY`) і поміщає її в прямокутну область зображення шириною `$dstW` і висотою `$dstH` у позиції (`$dstX`, `$dstY`).

Якщо координати джерела і призначення, ширина і висота відрізняються, фрагмент зображення розтягується або стискається відповідно. Координати відносяться до лівого верхнього кута. Цю функцію можна використовувати для копіювання областей одного і того ж зображення, але якщо області перекриваються, результати не будуть передбачуваними. ([докладніше |https://www.php.net/manual/en/function.imagecopyresampled])


copyResized(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $dstW, int $dstH, int $srcW, int $srcH): void .[method]
-------------------------------------------------------------------------------------------------------------------------------
Копіює прямокутну частину одного зображення на інше зображення. Інакше кажучи, `copyResized()` отримує прямокутну область з `$src` шириною `$srcW` і висотою `$srcH` у позиції (`$srcX`, `$srcY`) і поміщає її в прямокутну область зображення шириною `$dstW` ] і висотою `$dstH` у позиції (`$dstX`, `$dstY`).

Якщо координати джерела і призначення, ширина і висота відрізняються, фрагмент зображення розтягується або стискається відповідно. Координати відносяться до лівого верхнього кута. Цю функцію можна використовувати для копіювання областей одного і того ж зображення, але якщо області перекриваються, результати не будуть передбачуваними. ([докладніше |https://www.php.net/manual/en/function.imagecopyresized])


crop(int|string $left, int|string $top, int|string $width, int|string $height): Image .[method]
-----------------------------------------------------------------------------------------------
Обрізає зображення до заданої прямокутної області. Розміри можуть бути вказані як цілі числа в пікселях або рядки у відсотках (наприклад, `'50%'`).


cropAuto(int $mode=-1, float $threshold=.5, ?ImageColor $color=null): Image .[method]
-------------------------------------------------------------------------------------
Автоматичне кадрування зображення відповідно до заданого `$mode`. ([докладніше |https://www.php.net/manual/en/function.imagecropauto])


ellipse(int $centerX, int $centerY, int $width, int $height, ImageColor $color): void .[method]
-----------------------------------------------------------------------------------------------
Малює еліпс із центром у заданих координатах. ([докладніше |https://www.php.net/manual/en/function.imageellipse])


fill(int $x, int $y, ImageColor $color): void .[method]
-------------------------------------------------------
Заповнює область, що починається в заданій координаті (зліва вгорі 0, 0), заданим `$color`. ([докладніше |https://www.php.net/manual/en/function.imagefill])


filledArc(int $centerX, int $centerY, int $width, int $height, int $startAngle, int $endAngle, ImageColor $color, int $style): void .[method]
---------------------------------------------------------------------------------------------------------------------------------------------
Малює неповну дугу з центром у заданих координатах. ([докладніше |https://www.php.net/manual/en/function.imagefilledarc])


filledEllipse(int $centerX, int $centerY, int $width, int $height, ImageColor $color): void .[method]
-----------------------------------------------------------------------------------------------------
Малює еліпс із центром у заданих координатах. ([докладніше |https://www.php.net/manual/en/function.imagefilledellipse])


filledPolygon(array $points, ImageColor $color): void .[method]
---------------------------------------------------------------
Створює заповнений багатокутник на зображенні. ([докладніше |https://www.php.net/manual/en/function.imagefilledpolygon])


filledRectangle(int $x1, int $y1, int $x2, int $y2, ImageColor $color): void .[method]
--------------------------------------------------------------------------------------
Створює прямокутник, заповнений `$color` на зображенні, що починається з `$x1` та `$y1` і закінчується `$x2` та `$y2`. Точка 0, 0 є верхнім лівим кутом зображення. ([докладніше |https://www.php.net/manual/en/function.imagefilledrectangle])


filledRectangleWH(int $left, int $top, int $width, int $height, ImageColor $color): void .[method]
--------------------------------------------------------------------------------------------------
Створює на зображенні прямокутник, заповнений `$color`, починаючи з точок `$left` та `$top` з шириною `$width` та висотою `$height`. Точка 0, 0 є верхнім лівим кутом зображення.


fillToBorder(int $x, int $y, int $border, ImageColor $color): void .[method]
----------------------------------------------------------------------------
Створює заливку, колір межі якої визначається `$border`. Початкова точка заливки - `$x`, `$y` (лівий верхній кут - 0, 0), а область заливається кольором `$color`. ([докладніше |https://www.php.net/manual/en/function.imagefilltoborder])


filter(int $filtertype, int ...$args): void .[method]
-----------------------------------------------------
Застосовує заданий фільтр `$filtertype` до зображення. ([докладніше |https://www.php.net/manual/en/function.imagefilter])


flip(int $mode): void .[method]
-------------------------------
Інвертує зображення за заданою адресою `$mode`. ([докладніше |https://www.php.net/manual/en/function.imageflip])


ftText(float $size, float $angle, int $x, int $y, ImageColor $color, string $fontFile, string $text, array $options=[]): array .[method]
----------------------------------------------------------------------------------------------------------------------------------------
Напишіть текст на картинці. ([більше |https://www.php.net/manual/en/function.imagefttext])


gammaCorrect(float $inputgamma, float $outputgamma): void .[method]
-------------------------------------------------------------------
Застосувати гамма-корекцію до зображення відносно вхідної та вихідної гами. ([докладніше |https://www.php.net/manual/en/function.imagegammacorrect])


getClip(): array .[method]
--------------------------
Повертає поточний обріз, тобто область, за межами якої не будуть малюватися пікселі. ([докладніше |https://www.php.net/manual/en/function.imagegetclip])


getHeight(): int .[method]
--------------------------
Повертає висоту зображення.


getImageResource(): resource|GdImage .[method]
----------------------------------------------
Повертає вихідний ресурс.


getWidth(): int .[method]
-------------------------
Повертає ширину зображення.


interlace(?int $interlace=null): int .[method]
----------------------------------------------
Увімкнення або вимкнення режиму черезрядкової розгортки. Якщо встановлено черезрядковий режим і зображення зберігається у форматі JPEG, воно буде збережено як прогресивний JPEG. ([докладніше |https://www.php.net/manual/en/function.imageinterlace])


isTrueColor(): bool .[method]
-----------------------------
Визначте, чи є зображення truecolor. ([докладніше |https://www.php.net/manual/en/function.imageistruecolor])


layerEffect(int $effect): void .[method]
----------------------------------------
Встановіть прапор альфа-змішання для використання ефектів нашарування. ([докладніше |https://www.php.net/manual/en/function.imagelayereffect])


line(int $x1, int $y1, int $x2, int $y2, ImageColor $color): void .[method]
---------------------------------------------------------------------------
Проводить лінію між двома заданими точками. ([докладніше |https://www.php.net/manual/en/function.imageline])


openPolygon(array $points, ImageColor $color): void .[method]
-------------------------------------------------------------
Малює відкритий багатокутник на зображенні. На відміну від `polygon()`, між останньою і першою точкою не проводиться лінія. ([докладніше |https://www.php.net/manual/en/function.imageopenpolygon])


paletteCopy(Image $source): void .[method]
------------------------------------------
Копіює палітру з сайту `$source` у зображення. ([докладніше |https://www.php.net/manual/en/function.imagepalettecopy])


paletteToTrueColor(): void .[method]
------------------------------------
Перетворює зображення на основі палітри в повнокольорове зображення. ([докладніше |https://www.php.net/manual/en/function.imagepalettetotruecolor])


place(Image $image, int|string $left=0, int|string $top=0, int $opacity=100): Image .[method]
---------------------------------------------------------------------------------------------
Копіює `$image` у зображення за координатами `$left` і `$top`. Координати можуть бути вказані як цілі числа в пікселях або рядки у відсотках (наприклад, `'50%'`).


polygon(array $points, ImageColor $color): void .[method]
---------------------------------------------------------
Створює багатокутник на зображенні. ([докладніше |https://www.php.net/manual/en/function.imagepolygon])


rectangle(int $x1, int $y1, int $x2, int $y2, ImageColor $color): void .[method]
--------------------------------------------------------------------------------
Створює прямокутник за заданими координатами. ([докладніше |https://www.php.net/manual/en/function.imagerectangle])


rectangleWH(int $left, int $top, int $width, int $height, ImageColor $color): void .[method]
--------------------------------------------------------------------------------------------
Створює прямокутник за заданими координатами.


resize(int|string $width, int|string $height, int $flags=Image::OrSmaller): Image .[method]
-------------------------------------------------------------------------------------------
Зміна розмірів зображення, [додаткова інформація |#Image-Resize]. Розміри можуть бути вказані як цілі числа в пікселях або рядки у відсотках (наприклад, `'50%'`).


resolution(?int $resX=null, ?int $resY=null): mixed .[method]
-------------------------------------------------------------
Встановлює або повертає роздільну здатність зображення в DPI (точках на дюйм). Якщо жоден із додаткових параметрів не вказано, поточну роздільну здатність повертають у вигляді індексованого поля. Якщо вказано тільки `$resX`, то горизонтальна і вертикальна роздільна здатність встановлюється на це значення. Якщо вказано обидва додаткові параметри, горизонтальну та вертикальну роздільну здатність встановлюють на ці значення.

Роздільна здатність використовується як метаінформація тільки під час читання і запису зображень у формати, що підтримують таку інформацію (наразі це PNG і JPEG). Це не впливає ні на які операції малювання. Роздільна здатність нових зображень за замовчуванням становить 96 DPI. ([докладніше |https://www.php.net/manual/en/function.imageresolution])


rotate(float $angle, int $backgroundColor): Image .[method]
-----------------------------------------------------------
Повертає зображення на вказане значення `$angle` у градусах. Центром обертання є центр зображення, і повернуте зображення може мати розміри, відмінні від розмірів вихідного зображення. ([докладніше |https://www.php.net/manual/en/function.imagerotate])

.[note]
Вимагає наявності *Bundled GD extension*, тому може працювати не скрізь.


save(string $file, ?int $quality=null, ?int $type=null): void .[method]
-----------------------------------------------------------------------
Зберігає зображення у файл.

Якість стиснення знаходиться в діапазоні 0...100 для JPEG (за замовчуванням 85), WEBP (за замовчуванням 80) і AVIF (за замовчуванням 30) та 0...9 для PNG (за замовчуванням 9). Якщо тип не очевидний з розширення файлу, ви можете вказати його за допомогою однієї з констант `ImageType`.


saveAlpha(bool $saveflag): void .[method]
-----------------------------------------
Встановлює прапор збереження повної інформації альфа-каналу (на відміну від монохромної прозорості) під час збереження зображень PNG.

Для збереження альфа-каналу альфа-квантування має бути вимкнено (`alphaBlending(false)`). ([докладніше |https://www.php.net/manual/en/function.imagesavealpha])


scale(int $newWidth, int $newHeight=-1, int $mode=IMG_BILINEAR_FIXED): Image .[method]
--------------------------------------------------------------------------------------
Масштабування зображення з використанням заданого алгоритму інтерполяції. ([докладніше |https://www.php.net/manual/en/function.imagescale])


send(int $type=ImageType::JPEG, ?int $quality=null): void .[method]
-------------------------------------------------------------------
Виводить зображення в браузер.

Якість стиснення знаходиться в діапазоні 0...100 для JPEG (за замовчуванням 85), WEBP (за замовчуванням 80) і AVIF (за замовчуванням 30) та 0...9 для PNG (за замовчуванням 9).


setBrush(Image $brush): void .[method]
--------------------------------------
Встановлює зображення пензля, яке буде використовуватися у всіх функціях малювання ліній (наприклад, `line()` і `polygon()`) під час малювання спеціальними кольорами IMG_COLOR_BRUSHED або IMG_COLOR_STYLEDBRUSHED. ([докладніше |https://www.php.net/manual/en/function.imagesetbrush])


setClip(int $x1, int $y1, int $x2, int $y2): void .[method]
-----------------------------------------------------------
Встановлює поточний обріз, тобто область, за межами якої не будуть малюватися пікселі. ([докладніше |https://www.php.net/manual/en/function.imagesetclip])


setInterpolation(int $method=IMG_BILINEAR_FIXED): void .[method]
----------------------------------------------------------------
Задає метод інтерполяції, який впливає на методи `rotate()` і `affine()`. ([докладніше |https://www.php.net/manual/en/function.imagesetinterpolation])


setPixel(int $x, int $y, ImageColor $color): void .[method]
-----------------------------------------------------------
Малює піксель у вказаній координаті. ([докладніше |https://www.php.net/manual/en/function.imagesetpixel])


setStyle(array $style): void .[method]
--------------------------------------
Задає стиль, який буде використовуватися всіма функціями малювання ліній (наприклад, `line()` і `polygon()`) під час малювання спеціальним кольором IMG_COLOR_STYLED або ліній зображення кольором IMG_COLOR_STYLEDBRUSHED ([докладніше |https://www.php.net/manual/en/function.imagesetstyle]).


setThickness(int $thickness): void .[method]
--------------------------------------------
Встановлює товщину ліній під час малювання прямокутників, багатокутників, дуг тощо. На сайті `$thickness` пікселів. ([докладніше |https://www.php.net/manual/en/function.imagesetthickness])


setTile(Image $tile): void .[method]
------------------------------------
Встановлює зображення плитки, яке буде використовуватися у всіх функціях заповнення регіону (наприклад, `fill()` і `filledPolygon()`) при заповненні спеціальним кольором IMG_COLOR_TILED.

Плитка - це зображення, що використовується для заповнення області повторюваним малюнком. Як плитку можна використовувати будь-яке зображення, а задавши індекс прозорого кольору зображення плитки за допомогою `colorTransparent()`, можна створити плитку, в якій будуть просвічувати певні частини нижчого регіону. ([докладніше |https://www.php.net/manual/en/function.imagesettile])


sharpen(): Image .[method]
--------------------------
Підвищує різкість зображення.

.[note]
Вимагає наявності *Bundled GD extension*, тому може працювати не скрізь.


toString(int $type=ImageType::JPEG, ?int $quality=null): string .[method]
-------------------------------------------------------------------------
Зберігає зображення в рядку.

Якість стиснення знаходиться в діапазоні 0...100 для JPEG (за замовчуванням 85), WEBP (за замовчуванням 80) і AVIF (за замовчуванням 30) та 0...9 для PNG (за замовчуванням 9).


trueColorToPalette(bool $dither, int $ncolors): void .[method]
--------------------------------------------------------------
Перетворює truecolor зображення в палітру. ([докладніше |https://www.php.net/manual/en/function.imagetruecolortopalette])


ttfText(float $size, float $angle, int $x, int $y, ImageColor $color, string $fontFile, string $text, array $options=[]): array .[method]
-----------------------------------------------------------------------------------------------------------------------------------------
Записує заданий текст у зображення. ([докладніше |https://www.php.net/manual/en/function.imagettftext])

Робота із зображеннями

Клас Nette\Utils\Image дає змогу легко маніпулювати зображеннями, наприклад, змінювати розмір, обрізати, підвищувати різкість, малювати або з'єднувати кілька зображень.

PHP має великий набір функцій для роботи із зображеннями. Але їхній API не дуже зручний. Це був би не Nette Framework, якби не придумали сексуальний API.

Встановлення:

composer require nette/utils

У всіх прикладах передбачається, що псевдонім уже створено:

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

Створення зображення

Створіть нове істинно кольорове зображення, наприклад, розміром 100×200:

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

За бажанням можна вказати колір фону (за замовчуванням чорний):

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

Або завантажте зображення з файлу:

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

Збереження зображення

Зображення можна зберегти у файл:

$image->save('resampled.jpg');

Ми можемо вказати якість стиснення в діапазоні 0…100 для JPEG (за замовчуванням 85), WEBP (за замовчуванням 80) і AVIF (за замовчуванням 30) та 0…9 для PNG (за замовчуванням 9):

$image->save('resampled.jpg', 80); // JPEG, 80% якості

Якщо формат не очевидний з розширення файлу, його можна вказати за допомогою константи:

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

Зображення може бути записано не на диск, а у змінну:

$data = $image->toString(ImageType::JPEG, 80); // JPEG, 80% якості

або надсилається безпосередньо в браузер із відповідним HTTP-заголовком Content-Type:

// відправляє заголовок Content-Type: image/png
$image->send(ImageType::PNG);

Формати

Підтримуються формати JPEG, PNG, GIF, WebP, AVIF і BMP. Однак вони також повинні підтримуватися вашою версією PHP, що можна перевірити за допомогою функції isTypeSupported( ). Анімація не підтримується.

Формати представлені константами ImageType::JPEG, ImageType::PNG, ImageType::GIF, ImageType::WEBP, ImageType::AVIF і ImageType::BMP.

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

Потрібно визначити формат зображення при завантаженні? Метод повертає його у другому параметрі:

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

Власне визначення без завантаження зображення виконується за допомогою Image::detectTypeFromFile().

Змінити розмір

Частою операцією є зміна розміру зображення. Фактичні розміри повертаються методами getWidth() та getHeight().

Метод resize() використовується для зміни розміру зображення так, щоб воно не перевищувало 500×300 пікселів (або ширина буде рівно 500 px, або висота рівно 300 px, один із розмірів обчислюється для збереження співвідношення сторін):

$image->resize(500, 300);

Можна вказати тільки один вимір, а інший буде розраховано:

$image->resize(500, null); // ширина 500px, висота розраховується

$image->resize(null, 300); // ширина розрахована, висота 300px

Будь-який вимір може бути вказано у відсотках:

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

На поведінку resize можуть впливати такі симптоми. Усі, крім Image::Stretch, зберігають співвідношення сторін.

Прапор Опис
Image::OrSmaller (за замовчуванням) результуючі розміри будуть менші або дорівнювати запитуваним розмірам.
Image::OrBigger заповнює (і, можливо, перевищує в одному вимірі) цільову область
Image::Cover заповнює цільову область і обрізає те, що виходить за її межі.
Image::ShrinkOnly тільки зменшення (дозволяє уникнути розтягування маленького зображення)
Image::Stretch не зберігати співвідношення сторін

Прапори передаються як третій аргумент функції:

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

Прапори можна комбінувати:

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

Зображення можна перевернути по вертикалі або горизонталі, вказавши один із розмірів (або обидва) як від'ємне число:

$flipped = $image->resize(null, '-100%'); // перевернемо вертикально

$flipped = $image->resize('-100%', '-100%'); // повертаємо на 180

$flipped = $image->resize(-125, 500); // змінити розмір та перевернути по горизонталі

Після зменшення зображення можна поліпшити його зовнішній вигляд за допомогою тонкого налаштування різкості:

$image->sharpen();

Рослинництво

Для обробітку використовується метод crop():

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

Як і у випадку з resize(), усі значення можуть бути представлені у відсотках. Відсотки для $left і $top розраховуються з простору, що залишився, аналогічно властивості CSS background-position:

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

Зображення можна також автоматично обрізати, наприклад, обрізати чорні межі:

$image->cropAuto(IMG_CROP_BLACK);

Метод cropAuto() є об'єктною заміною функції imagecropauto(), більш детальну інформацію див. у документації до неї.

Кольори

Метод ImageColor::rgb() дозволяє визначити колір за допомогою значень червоного, зеленого та синього (RGB). За бажанням, ви також можете вказати значення прозорості в діапазоні від 0 (повністю прозорий) до 1 (повністю непрозорий), так само, як і в CSS.

$color = ImageColor::rgb(255, 0, 0); // Red
$transparentBlue = ImageColor::rgb(0, 0, 255, 0.5); // Semi-transparent blue

Метод ImageColor::hex() дозволяє визначити колір за допомогою шістнадцяткового формату, подібно до CSS. Він підтримує формати #rgb, #rrggbb, #rgba і #rrggbbaa:

$color = ImageColor::hex("#F00"); // Red
$transparentGreen = ImageColor::hex("#00FF0080"); // Semi-transparent green

Кольори можна використовувати і в інших методах, таких як ellipse(), fill() тощо.

Малювання та редагування

Ви можете малювати, можете писати, можете використовувати всі функції PHP для маніпулювання зображеннями, див. Огляд методів, але в об'єктно-орієнтованій обгортці:

$image->filledEllipse($centerX, $centerY, $width, $height, ImageColor::rgb(255, 0, 0));

Оскільки функції PHP для малювання прямокутників непрактичні через необхідність вказувати координати, клас Image пропонує їх заміну у вигляді функцій rectangleWH( ) і filledRectangleWH().

Об'єднання декількох зображень

Ви можете легко вставити інше зображення у фотографію:

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

// координати можуть бути знову задані у відсотках
$blank->place($logo, '80%', '80%'); // вставте в правий нижній кут

Альфаканал дотримується під час вставки, і ми можемо впливати на прозорість вставленого зображення (ми створюємо водяний знак):

$blank->place($image, '80%', '80%', 25); // прозорість становить 25%

Цей API – справжнє задоволення від використання!

Огляд методів

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

Створює нове істинно кольорове зображення заданих розмірів. За замовчуванням використовується чорний колір.

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

Читає зображення з файлу і повертає його тип в $detectedFormat.

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

Читає зображення з рядка і повертає його тип в $detectedFormat.

static rgb(int $red, int $green, int $blue, int $transparency=0)array

Ця функція була замінена на клас ImageColor, див. кольори.

static typeToExtension(int $type)string

Повертає розширення файлу для заданого типу.

static typeToMimeType(int $type)string

Повертає тип mime для заданого типу.

static extensionToType(string $extension)int

Повертає тип зображення відповідно до розширення файлу.

static detectTypeFromFile(string $file, int &$width=null, int &$height=null)?int

Повертає тип файлу зображення, а в параметрах $width та $height також його розміри.

static detectTypeFromString(string $s, int &$width=null, int &$height=null)?int

Повертає тип зображення з рядка, а в параметрах $width та $height також його розміри.

static isTypeSupported(int $type)bool

Визначає, чи підтримується даний тип зображення.

static getSupportedTypes(): array

Повертає масив підтримуваних типів зображень (константи ImageType::XXX).

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

Обчислює розміри прямокутника, який охоплює текст заданого шрифту та розміру. Повертає асоціативний масив, що містить ключі left, top, width, height. Ліве поле може бути від'ємним, якщо текст починається з лівого відступу.

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

Повертає зображення, що містить афінно-трансформоване зображення src з використанням необов'язкової області обрізання. (докладніше).

affineMatrixConcat(array $m1, array $m2)array

Повертає конкатенацію двох матриць афінного перетворення, що корисно, якщо до одного зображення необхідно застосувати одразу кілька перетворень. (докладніше)

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

Повертає матрицю перетворення матриці. (докладніше)

alphaBlending(bool $on): void

Дозволяє використовувати два різні режими малювання в триколірних зображеннях. У режимі накладення компонент альфа-каналу кольору, який використовується у всіх функціях малювання, таких як setPixel(), визначає, якою мірою базовий колір повинен просвічувати. У результаті в цей момент наявний колір автоматично змішується з кольором малюнка, і результат зберігається в зображенні. У результаті піксель стає непрозорим. У режимі без змішування колір мультфільму копіюється дослівно з інформацією альфа-каналу і замінюється на цільовий піксель. Режим накладення недоступний під час малювання на зображеннях палітри. (докладніше)

antialias(bool $on): void

Активація малювання згладжених ліній і багатокутників. Не підтримує альфа-канали. Працює тільки з триколірними зображеннями.

Використання згладженого примітиву з прозорим кольором фону може призвести до несподіваних результатів. Метод змішування використовує колір фону як будь-який інший колір. (докладніше)

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

Малює дугу кола з центром у заданих координатах. (докладніше)

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

Повертає ідентифікатор кольору, що представляє колір, який складається із заданих компонентів RGB. Повинен бути викликаний для створення кожного кольору, який буде використовуватися в зображенні. (докладніше)

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

Діє так само, як і colorAllocate(), з додаванням параметра прозорості $alpha. (докладніше)

colorAt(int $x, int $y)int

Повертає індекс кольору пікселя у вказаному місці зображення. Якщо зображення є truecolor, ця функція повертає значення RGB для даного пікселя у вигляді цілого числа. Використовуйте зсув бітів і бітову маску для доступу до окремих значень для червоного, зеленого і синього компонентів. (докладніше)

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

Повертає індекс кольору в палітрі зображення, який „найближче“ до вказаного значення RGB. Відстань" між бажаним кольором і кожним кольором у палітрі розраховується так, як якщо б значення RGB були точками в тривимірному просторі. (докладніше)

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

Повертає індекс кольору в палітрі зображень, який „найближче“ до вказаного значення RGB і рівня $alpha. (докладніше)

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

Отримати індекс кольору, який має відтінок, білий і чорний кольори, найближчі до заданого кольору. (докладніше)

colorDeallocate(int $color)void

Видаляє колір, раніше призначений за допомогою colorAllocate() або colorAllocateAlpha(). (докладніше)

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

Повертає індекс зазначеного кольору в палітрі зображення. (докладніше)

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

Повертає індекс зазначеного кольору + альфа в палітрі зображень. (докладніше)

colorMatch(Image $image2)void

Поєднує кольори палітри з кольорами іншої панелі. (докладніше)

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

Повертає індекс кольору для бажаного кольору, або точний колір, або найближчий можливий альтернативний. (докладніше)

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

Повертає індекс кольору для бажаного кольору, або точний колір, або найближчий можливий альтернативний. (докладніше)

colorSet(int $index, int $red, int $green, int $blue)void

Встановлює вказаний індекс у палітрі на вказаний колір. (докладніше)

colorsForIndex(int $index)array

Отримує колір зазначеного індексу. (докладніше)

colorsTotal(): int

Повертає кількість кольорів у палітрі зображення. (докладніше)

colorTransparent(?int $color=null)int

Отримує або встановлює прозорий колір зображення. (докладніше)

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

Застосовує матрицю згортки до зображення, використовуючи заданий коефіцієнт і зміщення. (докладніше)

Вимагає наявності Bundled GD extension, тому може працювати не скрізь.

copy(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH)void

Копіює частину $src у зображення, що починається в координатах $srcX, $srcY з шириною $srcW і висотою $srcH. Певна частина буде скопійована в координати $dstX і $dstY. (докладніше)

copyMerge(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH, int $opacity)void

Копіює частину $src у зображення, що починається в координатах $srcX, $srcY з шириною $srcW і висотою $srcH. Певна частина буде скопійована в координати $dstX і $dstY. (докладніше)

copyMergeGray(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH, int $opacity)void

Копіює частину $src у зображення, що починається в координатах $srcX, $srcY з шириною $srcW і висотою $srcH. Певна частина буде скопійована в координати $dstX і $dstY.

Ця функція ідентична copyMerge(), за винятком того, що вона зберігає вихідний відтінок під час об'єднання, перетворюючи цільові пікселі у відтінки сірого перед операцією копіювання. (докладніше)

copyResampled(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $dstW, int $dstH, int $srcW, int $srcH)void

Копіює прямокутну частину одного зображення в інше зображення, плавно інтерполюючи значення пікселів так, щоб при зменшенні розміру зображення зберігало високу чіткість.

Іншими словами, copyResampled() бере прямокутну область з $src шириною $srcW і висотою $srcH у позиції ($srcX, $srcY) і поміщає її в прямокутну область зображення шириною $dstW і висотою $dstH у позиції ($dstX, $dstY).

Якщо координати джерела і призначення, ширина і висота відрізняються, фрагмент зображення розтягується або стискається відповідно. Координати відносяться до лівого верхнього кута. Цю функцію можна використовувати для копіювання областей одного і того ж зображення, але якщо області перекриваються, результати не будуть передбачуваними. (докладніше)

copyResized(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $dstW, int $dstH, int $srcW, int $srcH)void

Копіює прямокутну частину одного зображення на інше зображення. Інакше кажучи, copyResized() отримує прямокутну область з $src шириною $srcW і висотою $srcH у позиції ($srcX, $srcY) і поміщає її в прямокутну область зображення шириною $dstW ] і висотою $dstH у позиції ($dstX, $dstY).

Якщо координати джерела і призначення, ширина і висота відрізняються, фрагмент зображення розтягується або стискається відповідно. Координати відносяться до лівого верхнього кута. Цю функцію можна використовувати для копіювання областей одного і того ж зображення, але якщо області перекриваються, результати не будуть передбачуваними. (докладніше)

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

Обрізає зображення до заданої прямокутної області. Розміри можуть бути вказані як цілі числа в пікселях або рядки у відсотках (наприклад, '50%').

cropAuto(int $mode=-1, float $threshold=.5, ?ImageColor $color=null)Image

Автоматичне кадрування зображення відповідно до заданого $mode. (докладніше)

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

Малює еліпс із центром у заданих координатах. (докладніше)

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

Заповнює область, що починається в заданій координаті (зліва вгорі 0, 0), заданим $color. (докладніше)

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

Малює неповну дугу з центром у заданих координатах. (докладніше)

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

Малює еліпс із центром у заданих координатах. (докладніше)

filledPolygon(array $points, ImageColor $color)void

Створює заповнений багатокутник на зображенні. (докладніше)

filledRectangle(int $x1, int $y1, int $x2, int $y2, ImageColor $color)void

Створює прямокутник, заповнений $color на зображенні, що починається з $x1 та $y1 і закінчується $x2 та $y2. Точка 0, 0 є верхнім лівим кутом зображення. (докладніше)

filledRectangleWH(int $left, int $top, int $width, int $height, ImageColor $color)void

Створює на зображенні прямокутник, заповнений $color, починаючи з точок $left та $top з шириною $width та висотою $height. Точка 0, 0 є верхнім лівим кутом зображення.

fillToBorder(int $x, int $y, int $border, ImageColor $color)void

Створює заливку, колір межі якої визначається $border. Початкова точка заливки – $x, $y (лівий верхній кут – 0, 0), а область заливається кольором $color. (докладніше)

filter(int $filtertype, int …$args)void

Застосовує заданий фільтр $filtertype до зображення. (докладніше)

flip(int $mode): void

Інвертує зображення за заданою адресою $mode. (докладніше)

ftText(float $size, float $angle, int $x, int $y, ImageColor $color, string $fontFile, string $text, array $options=[])array

Напишіть текст на картинці. (більше)

gammaCorrect(float $inputgamma, float $outputgamma)void

Застосувати гамма-корекцію до зображення відносно вхідної та вихідної гами. (докладніше)

getClip(): array

Повертає поточний обріз, тобто область, за межами якої не будуть малюватися пікселі. (докладніше)

getHeight(): int

Повертає висоту зображення.

getImageResource(): resource|GdImage

Повертає вихідний ресурс.

getWidth(): int

Повертає ширину зображення.

interlace(?int $interlace=null)int

Увімкнення або вимкнення режиму черезрядкової розгортки. Якщо встановлено черезрядковий режим і зображення зберігається у форматі JPEG, воно буде збережено як прогресивний JPEG. (докладніше)

isTrueColor(): bool

Визначте, чи є зображення truecolor. (докладніше)

layerEffect(int $effect)void

Встановіть прапор альфа-змішання для використання ефектів нашарування. (докладніше)

line(int $x1, int $y1, int $x2, int $y2, ImageColor $color)void

Проводить лінію між двома заданими точками. (докладніше)

openPolygon(array $points, ImageColor $color)void

Малює відкритий багатокутник на зображенні. На відміну від polygon(), між останньою і першою точкою не проводиться лінія. (докладніше)

paletteCopy(Image $source)void

Копіює палітру з сайту $source у зображення. (докладніше)

paletteToTrueColor(): void

Перетворює зображення на основі палітри в повнокольорове зображення. (докладніше)

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

Копіює $image у зображення за координатами $left і $top. Координати можуть бути вказані як цілі числа в пікселях або рядки у відсотках (наприклад, '50%').

polygon(array $points, ImageColor $color)void

Створює багатокутник на зображенні. (докладніше)

rectangle(int $x1, int $y1, int $x2, int $y2, ImageColor $color)void

Створює прямокутник за заданими координатами. (докладніше)

rectangleWH(int $left, int $top, int $width, int $height, ImageColor $color)void

Створює прямокутник за заданими координатами.

resize(int|string $width, int|string $height, int $flags=Image::OrSmaller)Image

Зміна розмірів зображення, додаткова інформація. Розміри можуть бути вказані як цілі числа в пікселях або рядки у відсотках (наприклад, '50%').

resolution(?int $resX=null, ?int $resY=null)mixed

Встановлює або повертає роздільну здатність зображення в DPI (точках на дюйм). Якщо жоден із додаткових параметрів не вказано, поточну роздільну здатність повертають у вигляді індексованого поля. Якщо вказано тільки $resX, то горизонтальна і вертикальна роздільна здатність встановлюється на це значення. Якщо вказано обидва додаткові параметри, горизонтальну та вертикальну роздільну здатність встановлюють на ці значення.

Роздільна здатність використовується як метаінформація тільки під час читання і запису зображень у формати, що підтримують таку інформацію (наразі це PNG і JPEG). Це не впливає ні на які операції малювання. Роздільна здатність нових зображень за замовчуванням становить 96 DPI. (докладніше)

rotate(float $angle, int $backgroundColor)Image

Повертає зображення на вказане значення $angle у градусах. Центром обертання є центр зображення, і повернуте зображення може мати розміри, відмінні від розмірів вихідного зображення. (докладніше)

Вимагає наявності Bundled GD extension, тому може працювати не скрізь.

save(string $file, ?int $quality=null, ?int $type=null)void

Зберігає зображення у файл.

Якість стиснення знаходиться в діапазоні 0…100 для JPEG (за замовчуванням 85), WEBP (за замовчуванням 80) і AVIF (за замовчуванням 30) та 0…9 для PNG (за замовчуванням 9). Якщо тип не очевидний з розширення файлу, ви можете вказати його за допомогою однієї з констант ImageType.

saveAlpha(bool $saveflag)void

Встановлює прапор збереження повної інформації альфа-каналу (на відміну від монохромної прозорості) під час збереження зображень PNG.

Для збереження альфа-каналу альфа-квантування має бути вимкнено (alphaBlending(false)). (докладніше)

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

Масштабування зображення з використанням заданого алгоритму інтерполяції. (докладніше)

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

Виводить зображення в браузер.

Якість стиснення знаходиться в діапазоні 0…100 для JPEG (за замовчуванням 85), WEBP (за замовчуванням 80) і AVIF (за замовчуванням 30) та 0…9 для PNG (за замовчуванням 9).

setBrush(Image $brush)void

Встановлює зображення пензля, яке буде використовуватися у всіх функціях малювання ліній (наприклад, line() і polygon()) під час малювання спеціальними кольорами IMG_COLOR_BRUSHED або IMG_COLOR_STYLEDBRUSHED. (докладніше)

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

Встановлює поточний обріз, тобто область, за межами якої не будуть малюватися пікселі. (докладніше)

setInterpolation(int $method=IMG_BILINEAR_FIXED)void

Задає метод інтерполяції, який впливає на методи rotate() і affine(). (докладніше)

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

Малює піксель у вказаній координаті. (докладніше)

setStyle(array $style)void

Задає стиль, який буде використовуватися всіма функціями малювання ліній (наприклад, line() і polygon()) під час малювання спеціальним кольором IMG_COLOR_STYLED або ліній зображення кольором IMG_COLOR_STYLEDBRUSHED (докладніше).

setThickness(int $thickness)void

Встановлює товщину ліній під час малювання прямокутників, багатокутників, дуг тощо. На сайті $thickness пікселів. (докладніше)

setTile(Image $tile)void

Встановлює зображення плитки, яке буде використовуватися у всіх функціях заповнення регіону (наприклад, fill() і filledPolygon()) при заповненні спеціальним кольором IMG_COLOR_TILED.

Плитка – це зображення, що використовується для заповнення області повторюваним малюнком. Як плитку можна використовувати будь-яке зображення, а задавши індекс прозорого кольору зображення плитки за допомогою colorTransparent(), можна створити плитку, в якій будуть просвічувати певні частини нижчого регіону. (докладніше)

sharpen(): Image

Підвищує різкість зображення.

Вимагає наявності Bundled GD extension, тому може працювати не скрізь.

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

Зберігає зображення в рядку.

Якість стиснення знаходиться в діапазоні 0…100 для JPEG (за замовчуванням 85), WEBP (за замовчуванням 80) і AVIF (за замовчуванням 30) та 0…9 для PNG (за замовчуванням 9).

trueColorToPalette(bool $dither, int $ncolors)void

Перетворює truecolor зображення в палітру. (докладніше)

ttfText(float $size, float $angle, int $x, int $y, ImageColor $color, string $fontFile, string $text, array $options=[])array

Записує заданий текст у зображення. (докладніше)