Идёт обновление сайта. Несколько дней возможны сбои в оформлении и переводах. Документация работает — если страница выглядит сломанной, обновите её позже.

Документация
L Laravel L intervention/image
Войти
Главная image 3.x Изменение размера изображений

Изменение размера изображений

3.x 7 мар 2026 г.

#Простое изменение размера изображения

Попробуйте в онлайн-демо

#Изменить размер изображения

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