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%'); // flip vertical

$flipped = $image->resize('-100%', '-100%'); // rotate 180°

$flipped = $image->resize(-125, 500); // resize & flip horizontal
```

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

```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%'); // flip vertical

$flipped = $image->resize('-100%', '-100%'); // rotate 180°

$flipped = $image->resize(-125, 500); // resize & flip horizontal

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

$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

Записывает заданный текст в изображение. (подробнее)