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;
```


Создание изображения
====================

Создадим новое true color изображение, например, размером 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');
```


Сохранение изображения
======================

Изображение можно сохранить в файл:

```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%
```

Если формат не очевиден из расширения файла, его можно указать [константой |#Форматы]:

```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);
```


Форматы
=======

Поддерживаемые форматы: JPEG, PNG, GIF, WebP, AVIF и BMP, однако они также должны поддерживаться вашей версией PHP, что можно проверить с помощью функции [#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()`.


Изменение размера
=================

Частой операцией является изменение размеров изображения. Текущие размеры возвращают методы `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();
```


Обрезка
=======

Для обрезки используется метод `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] вы найдете дополнительную информацию.


Цвета .{data-version:4.0.2}
===========================

Метод `ImageColor::rgb()` позволяет определить цвет с помощью значений красного, зеленого и синего (RGB). Опционально можно также указать значение прозрачности в диапазоне от 0 (полностью прозрачный) до 1 (полностью непрозрачный), то есть так же, как в CSS.

```php
$color = ImageColor::rgb(255, 0, 0); // Красный
$transparentBlue = ImageColor::rgb(0, 0, 255, 0.5); // Полупрозрачный синий
```

Метод `ImageColor::hex()` позволяет определить цвет с помощью шестнадцатеричного формата, аналогично CSS. Поддерживает форматы `#rgb`, `#rrggbb`, `#rgba` и `#rrggbbaa`:

```php
$color = ImageColor::hex("#F00"); // Красный
$transparentGreen = ImageColor::hex("#00FF0080"); // Полупрозрачный зеленый
```

Цвета можно использовать в других методах, таких как `ellipse()`, `fill()` и т. д.


Рисование и редактирование
==========================

Можешь рисовать, можешь писать, но листья не рвать. Вам доступны все функции PHP для работы с изображениями, см. [#Обзор методов], но в объектной обертке:

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

Поскольку функции PHP для рисования прямоугольников неудобны из-за указания координат, класс `Image` предлагает их замены в виде функций [#rectangleWH()] и [#filledRectangleWH()].


Объединение нескольких изображений
==================================

В изображение можно легко вставить другое изображение:

```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 действительно приятно использовать!


Обзор методов
=============


static fromBlank(int $width, int $height, ?ImageColor $color=null): Image .[method]
-----------------------------------------------------------------------------------
Создает новое true color изображение заданных размеров. Цвет по умолчанию - черный.


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


static fromString(string $s, int &$detectedFormat=null): Image .[method]
------------------------------------------------------------------------
Загружает изображение из строки и возвращает его [тип |#Форматы] в `$detectedFormat`.


static rgb(int $red, int $green, int $blue, int $transparency=0): array .[method][deprecated]
---------------------------------------------------------------------------------------------
Эта функция заменена классом `ImageColor`, см. [#цвета].


static typeToExtension(int $type): string .[method]
---------------------------------------------------
Возвращает расширение файла для данного [типа |#Форматы].


static typeToMimeType(int $type): string .[method]
--------------------------------------------------
Возвращает mime-тип для данного [типа |#Форматы].


static extensionToType(string $extension): int .[method]
--------------------------------------------------------
Возвращает [тип |#Форматы] изображения по расширению файла.


static detectTypeFromFile(string $file, int &$width=null, int &$height=null): ?int .[method]
--------------------------------------------------------------------------------------------
Возвращает [тип |#Форматы] изображения и в параметрах `$width` и `$height` также его размеры.


static detectTypeFromString(string $s, int &$width=null, int &$height=null): ?int .[method]
-------------------------------------------------------------------------------------------
Возвращает [тип |#Форматы] изображения из строки и в параметрах `$width` и `$height` также его размеры.


static isTypeSupported(int $type): bool .[method]
-------------------------------------------------
Проверяет, поддерживается ли данный [тип |#Форматы] изображения.


static getSupportedTypes(): array .[method]{data-version:4.0.4}
---------------------------------------------------------------
Возвращает массив поддерживаемых [типов |#Форматы] изображений.


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


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]
---------------------------------------
Позволяет использовать два разных режима рисования в изображениях truecolor. В режиме смешивания компонент альфа-канала цвета, используемый во всех функциях рисования, таких как `setPixel()`, определяет, в какой степени должна просвечивать основная краска. В результате существующий цвет в этой точке автоматически смешивается с рисуемым цветом, и результат сохраняется в изображении. Полученный пиксель непрозрачен. В режиме без смешивания рисуемый цвет копируется буквально с информацией альфа-канала и заменяет целевой пиксель. Режим смешивания недоступен при рисовании на палитровых изображениях. ([подробнее |https://www.php.net/manual/en/function.imagealphablending])


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

Использование сглаженных примитивов с прозрачным цветом фона может привести к неожиданным результатам. Метод смешивания использует цвет фона так же, как и все остальные цвета. ([подробнее |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]
----------------------------------------------------------------------------------------------------------------------------------------
Записывает текст на изображение, используя шрифты FreeType. ([подробнее |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]
----------------------------------------------
Возвращает исходный ресурс изображения GD.


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]
------------------------------------
Преобразует изображение на основе палитры в полноцветное изображение (truecolor). ([подробнее |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]
-------------------------------------------------------------------------------------------
Изменяет размер изображения, [подробнее |#Изменение размера]. Размеры можно указывать как целые числа в пикселях или строки в процентах (например, `'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]
-----------------------------------------------------------------------------------------------------------------------------------------
Выводит заданный текст на изображение, используя шрифты TrueType. ([подробнее |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;

Создание изображения

Создадим новое true color изображение, например, размером 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); // Красный
$transparentBlue = ImageColor::rgb(0, 0, 255, 0.5); // Полупрозрачный синий

Метод ImageColor::hex() позволяет определить цвет с помощью шестнадцатеричного формата, аналогично CSS. Поддерживает форматы #rgb, #rrggbb, #rgba и #rrggbbaa:

$color = ImageColor::hex("#F00"); // Красный
$transparentGreen = ImageColor::hex("#00FF0080"); // Полупрозрачный зеленый

Цвета можно использовать в других методах, таких как 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

Создает новое true color изображение заданных размеров. Цвет по умолчанию – черный.

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

Возвращает массив поддерживаемых типов изображений.

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

Вычисляет размеры прямоугольника, который охватывает текст определенного шрифта и размера. Возвращает ассоциативный массив, содержащий ключи left, top, width, height. Левый край может быть отрицательным, если текст начинается с левого выступающего элемента (kerning).

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

Позволяет использовать два разных режима рисования в изображениях truecolor. В режиме смешивания компонент альфа-канала цвета, используемый во всех функциях рисования, таких как setPixel(), определяет, в какой степени должна просвечивать основная краска. В результате существующий цвет в этой точке автоматически смешивается с рисуемым цветом, и результат сохраняется в изображении. Полученный пиксель непрозрачен. В режиме без смешивания рисуемый цвет копируется буквально с информацией альфа-канала и заменяет целевой пиксель. Режим смешивания недоступен при рисовании на палитровых изображениях. (подробнее)

antialias(bool $on): void

Активирует рисование сглаженных линий и полигонов. Не поддерживает альфа-каналы. Работает только с изображениями truecolor.

Использование сглаженных примитивов с прозрачным цветом фона может привести к неожиданным результатам. Метод смешивания использует цвет фона так же, как и все остальные цвета. (подробнее)

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

Записывает текст на изображение, используя шрифты FreeType. (подробнее)

gammaCorrect(float $inputgamma, float $outputgamma)void

Применяет гамма-коррекцию к изображению относительно входной и выходной гаммы. (подробнее)

getClip(): array

Возвращает текущую область обрезки, т.е. область, за пределами которой пиксели не будут нарисованы. (подробнее)

getHeight(): int

Возвращает высоту изображения.

getImageResource(): resource|GdImage

Возвращает исходный ресурс изображения GD.

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

Преобразует изображение на основе палитры в полноцветное изображение (truecolor). (подробнее)

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

Выводит заданный текст на изображение, используя шрифты TrueType. (подробнее)