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

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

Интеграция с фреймворком

3.x 7 мар 2026 г.

#Laravel

Intervention Image можно легко интегрировать в приложение Laravel с помощью официального пакета интеграции. Этот пакет предоставляет провайдер сервисов Laravel, фасад, публикуемый файл конфигурации и многое другое.

#Установка

Вместо установки Intervention Image напрямую достаточно подключить пакет intervention/image-laravel. Соответствующие базовые библиотеки будут установлены автоматически.

composer require intervention/image-laravel

#Глобальная конфигурация приложения

Расширение поставляется с глобальным файлом конфигурации, который распознаётся Laravel. Это позволяет один раз централизованно сохранить настройки Intervention Image и не задавать их вручную при каждом вызове менеджера изображений.

Файл конфигурации можно скопировать в приложение с помощью следующей команды.

php artisan vendor:publish --provider="Intervention\Image\Laravel\ServiceProvider"

Эта команда опубликует файл конфигурации config/image.php. Здесь вы можете задать желаемый драйвер и его параметры конфигурации для Intervention Image. По умолчанию библиотека настроена на использование библиотеки GD для обработки изображений.

Файл конфигурации выглядит следующим образом.

return [

    /*
    |--------------------------------------------------------------------------
    | Драйвер изображений
    |--------------------------------------------------------------------------
    |
    | Intervention Image поддерживает “GD Library” и “Imagick” для внутренней обработки изображений.
    | В зависимости от вашей конфигурации PHP вы можете выбрать один из них.
    |
    | Доступные варианты:
    |   - \Intervention\Image\Drivers\Gd\Driver::class
    |   - \Intervention\Image\Drivers\Imagick\Driver::class
    |
    */

    'driver' => \Intervention\Image\Drivers\Gd\Driver::class,

    /*
    |--------------------------------------------------------------------------
    | Параметры конфигурации
    |--------------------------------------------------------------------------
    |
    | Эти параметры управляют поведением Intervention Image.
    |
    | - "autoOrientation" определяет, должна ли импортированная картинка
    |    автоматически поворачиваться в соответствии с имеющимися данными Exif.
    |
    | - "decodeAnimation" решает, будет ли потенциально анимированное изображение
    |    декодировано как анимация или анимация будет отброшена.
    |
    | - "blendingColor" задаёт цвет смешивания по умолчанию.
    |
    | - "strip" управляет тем, должны ли метаданные, такие как теги Exif,
    |    удаляться при кодировании изображений.
    */

    'options' => [
        'autoOrientation' => true,
        'decodeAnimation' => true,
        'blendingColor' => 'ffffff',
        'strip' => false,
    ]
];

Подробнее о различных опциях для выбора драйвера, настройке параметров для автоориентации, декодирования анимаций и смешивания цвета.

#Статический интерфейс фасада

Этот пакет также интегрирует доступ к центральной точке входа Intervention Image, ImageManager::class, через статический фасад. Вызов обеспечивает доступ к централизованно настроенному менеджеру изображений через паттерн singleton.

В следующем примере показано, как прочитать изображение из запроса загрузки через фасад изображений в маршруте Laravel и сохранить его на диск с случайным именем файла.

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
use Intervention\Image\Laravel\Facades\Image;

Route::get('/', function (Request $request) {
    $upload = $request->file('image');
    $image = Image::read($upload)
        ->resize(300, 200);

    Storage::put(
        Str::random() . '.' . $upload->getClientOriginalExtension(),
        $image->encodeByExtension($upload->getClientOriginalExtension(), quality: 70)
    );
});

#Макрос ответа для изображения

image(Image $image, null|string|Format|MediaType|FileExtension $format = null, mixed ...$options)

Пакет включает макрос ответа, который можно использовать для удобного кодирования ресурса изображения и преобразования его в HTTP-ответ в один шаг.

Макрос автоматически формирует HTTP-заголовки ответа в соответствии с изображением и желаемым форматом вывода.

В следующем примере показано, как прочитать изображение с диска, применить к нему изменения и использовать макрос ответа для изображения, чтобы закодировать его и отправить пользователю одним вызовом. Требуется только первый параметр.

use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Storage;
use Intervention\Image\Format;
use Intervention\Image\Laravel\Facades\Image;

Route::get('/', function () {
    $image = Image::read(Storage::get('example.jpg'))
        ->scale(300, 200);

    return response()->image($image, Format::WEBP, quality: 65);
});

#Symfony

Intervention Image можно также интегрировать в фреймворк Symfony. Удобный способ — использовать официальный бандл интеграции.

Хотя использование этой библиотеки интеграции не является строго обязательным, она предлагает удобный способ централизованной конфигурации в рамках Symfony.

#Установка

Вместо установки Intervention Image напрямую достаточно подключить бандл intervention/image-symfony. Соответствующие зависимости будут установлены автоматически.

composer require intervention/image-symfony

#Глобальная конфигурация приложения

После успешной установки вы можете активировать бандл в файле config/bundes.php вашего приложения Symfony, вставив следующую строку в массив.

return [
    // ...
    Intervention\Image\Symfony\InterventionImageBundle::class => ['all' => true],
];

Теперь вы можете настроить драйвер для Intervention Image. По умолчанию бандл использует библиотеку GD с Intervention Image. Эти и другие параметры можно настроить, создав файл config/packages/intervention_image.yaml и указав класс драйвера и параметры по умолчанию следующим образом.

intervention_image:
  driver: Intervention\Image\Drivers\Gd\Driver
  options:
    autoOrientation: true
    decodeAnimation: true
    blendingColor: 'ffffff'
    strip: false

Сначала выберите, например, один из двух поставляемых драйверов Intervention\Image\Drivers\Gd\Driver и Intervention\Image\Drivers\Imagick\Driver.

Далее вы можете использовать опции для определения поведения библиотеки. Подробнее о различных опциях для выбора драйвера, настройке параметров для автоориентации, декодирования анимаций и смешивания цвета.

#Внедрение зависимостей

Интеграция завершена, и теперь можно получить доступ к менеджеру изображений через внедрение зависимостей.

namespace App\Controller;

use Intervention\Image\ImageManager;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;

class ExampleController extends AbstractController
{
    #[Route('/')]
    public function example(ImageManager $manager): Response
    {
        $image = $manager->read('images/example.jpg');
    }
}