#Простое изменение размера изображения
#Изменить размер изображения
public Image::resize(null|int $width = null, null|int $height = null): ImageInterface
Метод resize() просто растягивает изображение до нужного размера независимо от исходного соотношения сторон. Используйте resizeDown(), чтобы изменить размер, не превышая оригинального размера изображения. Метод поддерживает именованные аргументы, чтобы изменять только одну ось.
#Параметры
| Имя | Тип | Описание |
|---|---|---|
| width | integer | Желаемая ширина изображения. |
| height | integer | Желаемая высота изображения. |
#Пример
use Intervention\Image\ImageManager;
// создать новый экземпляр изображения
$image = ImageManager::imagick()->read('images/example.jpg');
// изменить размер до 300 x 200 пикселей
$image->resize(300, 200);
// изменить только высоту изображения до 200 пикселей
$image->resize(height: 200);
#Изменение размера без превышения оригинального размера
public Image::resizeDown(null|int $width = null, null|int $height = null): ImageInterface
Метод resizeDown() делает то же, что и resize(). Он растягивает изображение до указанного размера, но не превышает исходный размер изображения. Можно использовать именованные аргументы, чтобы изменить только одну ось.
#Параметры
| Имя | Тип | Описание |
|---|---|---|
| width | integer | Желаемая ширина изображения. |
| height | integer | Желаемая высота изображения. |
#Пример
use Intervention\Image\ImageManager;
// создать новый экземпляр изображения (800 x 600)
$image = ImageManager::imagick()->read('images/example.jpg');
$image = $image->resizeDown(2000, 100); // 800 x 100
// изменить только ширину изображения до 200 пикселей и не превышать оригинальную ширину
$image->resizeDown(width: 200);
#Масштабирование изображений
#Пропорциональное изменение размера изображений
public Image::scale(null|int $width = null, null|int $height = null): ImageInterface
Часто нужно изменить размер изображения, не искажая исходное соотношение сторон. Для таких операций можно использовать методы scale() или scaleDown().
Обратите внимание, что итоговый размер может отличаться от переданных аргументов, так как предпочтение отдается сохранению соотношения сторон.
#Параметры
| Имя | Тип | Описание |
|---|---|---|
| width | integer | Желаемая ширина изображения. |
| height | integer | Желаемая высота изображения. |
#Пример
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;
$manager = new ImageManager(new Driver());
// создать новый экземпляр изображения с размером 800 x 600 (4:3)
$image = $manager->read('images/example.jpg');
// масштабировать до заданной высоты
$image->scale(height: 300); // 400 x 300 (4:3)
// масштабировать до 120 x 100 пикселей
$image->scale(120, 100); // 120 x 90 (4:3)
#Масштабирование без превышения оригинального размера
public Image::scaleDown(null|int $width = null, null|int $height = null): ImageInterface
Метод scale() изменяет размер изображения с сохранением исходного соотношения сторон. scaleDown() похож на scale(), но отличается тем, что не превышает оригинальный размер изображения. Метод поддерживает именованные аргументы, чтобы изменять только одну ось.
Обратите внимание, что размер результата может отличаться от переданных значений параметров.
#Параметры
| Имя | Тип | Описание |
|---|---|---|
| width | integer | Желаемая ширина изображения. |
| height | integer | Желаемая высота изображения. |
#Пример
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Gd\Driver;
// создать новый экземпляр изображения
$manager = new ImageManager(Driver::class);
$image = $manager->read('images/example.jpg'); // 800 x 600
// уменьшить масштаб до заданной ширины
$image->scaleDown(width: 200); // 200 x 150
// уменьшить масштаб до заданной высоты
$image->scaleDown(height: 300); // 400 x 300
#Подогнанное изменение размера изображения
#Комбинация обрезки и изменения размера
public Image::cover(int $width, int $height, string $position = 'center'): ImageInterface
Метод cover() выполняет два шага: обрезку и изменение размера, чтобы получить заданный итоговый размер. Метод принимает размеры и масштабирует их до максимально возможного значения, соответствующего исходному изображению. Полученная область позиционируется на оригинале и обрезается, после чего масштабируется до желаемого размера, указанного в аргументах.
Для работы этого метода требуются оба аргумента — width и height. Дополнительно можно указать позицию, чтобы определить, какая часть изображения должна остаться в фокусе.
#Параметры
| Имя | Тип | Описание |
|---|---|---|
| width | integer | Желаемая ширина изображения. |
| height | integer | Желаемая высота изображения. |
| position (optional) | string | Позиция |
#Пример
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Gd\Driver;
// создать новый экземпляр изображения (800 x 600)
$manager = new ImageManager(Driver::class);
$image = $manager->read('images/example.jpg');
// вырезать наиболее подходящее соотношение 5:3 (600x360) и изменить размер до 600x360 пикселей
$img->cover(600, 360);
// вырезать наиболее подходящее соотношение 1:1 (200x200) и изменить размер до 200x200 пикселей
$img->cover(200, 200);
// заполнить область размером 300x300 и расположить обрезку слева
$image->cover(300, 300, 'left'); // 300 x 300 px
#Подогнанное изменение размера без превышения оригинала
public Image::coverDown(int $width, int $height, string $position = 'center'): ImageInterface
Метод имеет ту же цель и ту же сигнатуру, что и cover(), но итоговый размер в пикселях никогда не будет больше оригинального изображения. Используйте его, если хотите избежать увеличения (upsampling) изображения.
Обратите внимание, что размер результата может отличаться от переданных значений параметров.
#Параметры
| Имя | Тип | Описание |
|---|---|---|
| width | integer | Желаемая ширина изображения. |
| height | integer | Желаемая высота изображения. |
| position (optional) | string | Позиция |
#Пример
use Intervention\Image\ImageManager;
// создать новый экземпляр изображения
$image = ImageManager::imagick()->read('images/example.jpg'); // 800 x 600
// уменьшить до 1200x720 (5:3)
$img->coverDown(1200, 720); // 800 x 480 (5:3)
// уменьшить до 900x900 (1:1)
$img->coverDown(900, 900); // 600 x 600
// уменьшить до 900x450 (2:1) и расположить слева
$image->coverDown(900, 450, 'left'); // 800 x 400 px
#Изменение размера с заполнением
#Комбинация изменения размера и заполнения
public Image::pad(int $width, int $height, $background = 'ffffff', string $position = 'center'): ImageInterface
Изменение размера с заполнением означает, что исходное изображение масштабируется так, чтобы вписаться в заданный целевой размер без изменения соотношения сторон. Исходное изображение не увеличивается, а только уменьшается.
В отличие от cover(), этот метод не создаёт обрезанных областей, а может оставить пустые поля по сторонам результата. Они будут заполнены указанным цветом фона.
#Параметры
| Имя | Тип | Описание |
|---|---|---|
| width | integer | Ширина изображения. |
| height | integer | Высота изображения. |
| background (optional) | mixed | Цвет фона для новых областей изображения. |
| position (optional) | string | Позиция, где будет размещено исходное изображение. |
#Пример
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;
// создать новый экземпляр изображения
$manager = ImageManager::withDriver(new Driver());
$image = $manager->read('images/example.jpg');
// изменить размер с добавлением полей до 300 x 200
$image->pad(300, 200, 'ccc');
// изменить размер с добавлением полей с указанием позиции
$image->pad(500, 500, position: 'top-left');
#Изменение размера с заполнением и возможным увеличением
public Image::contain(int $width, int $height, $background = 'ffffff', string $position = 'center'): ImageInterface
Этот метод делает то же, что и pad(), но также увеличивает исходное изображение, если целевой размер превышает оригинальный.
#Параметры
| Имя | Тип | Описание |
|---|---|---|
| width | integer | Ширина изображения. |
| height | integer | Высота изображения. |
| background (optional) | mixed | Цвет фона для новых областей изображения. |
| position (optional) | string | Позиция, где будет размещено исходное изображение. |
#Пример
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Gd\Driver;
// создать новый экземпляр изображения (800 x 600)
$image = ImageManager::withDriver(Driver::class)->read('images/example.jpg');
// изменение размера с добавлением полей без увеличения
$image->contain(900, 600);
// изменение размера с полями с серым фоном
$image->contain(500, 500, 'efefef');
#Обрезка изображения
#Вырезать прямоугольную область
public Image::crop(int $width, int $height, int $offset_x = 0, int $offset_y = 0, mixed $background = 'ffffff', string $position = 'top-left'): ImageInterface
Обрезает прямоугольную область текущего изображения с заданными шириной и высотой в указанной позиции. Укажите опциональные смещения по x и y, чтобы сдвинуть обрезаемую область на заданное количество пикселей.
Также можно указать цвет фона. Он используется для заполнения любых новых областей, которые могут появиться, например если область обрезки больше исходного формата изображения.
#Параметры
| Имя | Тип | Описание |
|---|---|---|
| width | integer | Ширина вырезаемой области |
| height | integer | Высота вырезаемой области |
| offset_x (optional) | int | Смещение вырезаемой области по оси X в пикселях |
| offset_y (optional) | int | Смещение вырезаемой области по оси Y в пикселях |
| background (optional) | mixed | Цвет для заполнения вновь созданных областей |
| position (optional) | string | Позиция, по которой будет выровнена вырезаемая область |
Внимание: сигнатура изменилась в версии 3.3 — добавлен параметр background
#Пример
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;
// создать новый экземпляр изображения
$manager = new ImageManager(new Driver())
$image = $manager->read('images/example.jpg');
// вырезать область размером 200 x 150 пикселей на позиции 45,90
$image->crop(200, 150, 45, 90);
// вырезать область размером 40 x 40 пикселей из правого нижнего угла и сместить её на 30 пикселей вниз
$image->crop(200, 150, 0 , 30, position: 'bottom-right');
#Изменение размера холста изображения
#Изменение границ изображения без пересэмплирования исходного изображения
public Image::resizeCanvas(null|int $width = null, null|int $height = null, mixed $background = 'ffffff', string $position = 'center'): ImageInterface
Эта функция изменяет размер границ изображения без перерасчёта самого изображения. Если указанные размеры больше оригинала, область изображения добавляется указанным цветом. Если указанные размеры меньше, исходная область обрезается. Указанная позиция учитывается и определяет, где будет зафиксировано исходное изображение.
#Параметры
| Имя | Тип | Описание |
|---|---|---|
| width | null or integer | Ширина новой области изображения |
| height | null or integer | Высота новой области изображения |
| background (optional) | mixed | Цвет фона для новых областей изображения |
| position (optional) | string | Позиция, где будет зафиксировано исходное изображение |
#Пример
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;
// создать новый экземпляр изображения
$manager = new ImageManager(new Driver())
$image = $manager->read('images/example.jpg');
// изменить размер холста до 800 x 600 и заполнить добавленную область жёлтым
$image->resizeCanvas(800, 600, 'ff0');
#Изменение границ изображения относительно оригинала
public Image::resizeCanvasRelative(null|int $width = null, null|int $height = null, mixed $background = 'ffffff', string $position = 'center'): ImageInterface
Функция работает так же, как resizeCanvas(), но здесь вы указываете относительные значения, которые будут добавлены (положительные) или вычтены (отрицательные) из оригинального размера.
#Параметры
| Имя | Тип | Описание |
|---|---|---|
| width | null or integer | Величина, которая будет добавлена или вычтена из оригинальной ширины |
| height | null or integer | Величина, которая будет добавлена или вычтена из оригинальной высоты |
| background (optional) | mixed | Цвет фона для новых областей изображения |
| position (optional) | string | Позиция, где будет зафиксировано исходное изображение |
#Пример
use Intervention\Image\ImageManager;
use Intervention\Image\Drivers\Imagick\Driver;
// создать новый экземпляр изображения
$manager = new ImageManager(new Driver())
$image = $manager->read('images/example.jpg');
// добавить по 50 пикселей зелёного цвета с каждой стороны изображения
$image->resizeCanvas(50, 50, 'green');
// увеличить высоту на 20 пикселей снизу, заполнив их красным
$image->resizeCanvas(height: 20, background: 'ff0000', position: 'bottom');
#Обрезка границ изображения
#Удаление краевых областей похожего цвета
public Image::trim(int $tolerance = 0): ImageInterface
Удаляет краевые области изображения со схожим цветом. Степень сходства цвета регулируется опциональным параметром tolerance.
Это означает, что при значении tolerance, равном 0, будут удалены только цветовые области с точно таким же значением. Чем выше tolerance, тем больше похожих цветовых областей будет включено. Обычно значения до 20 имеют смысл.
Обратите внимание, что результаты могут значительно варьироваться в зависимости от драйвера и обрабатываемого изображения.
#Параметры
| Имя | Тип | Описание |
|---|---|---|
| tolerance | integer | Значение tolerance, определяющее, насколько близким по цвету должна быть краевая область, чтобы её удалить. |
#Пример
use Intervention\Image\ImageManager;
// создать новый экземпляр изображения
$image = ImageManager::gd()->read('images/example.jpg');
// обрезать с допуском 5
$image->trim(5);