Skip to main content

Introduction

Laravel expose, via la façade Image, une API fluide de traitement d’images. Le redimensionnement, le recadrage, l’encodage ou la sauvegarde s’écrivent de manière homogène sur l’ensemble du framework. En interne, la façade s’appuie sur Intervention Image et prend en charge à la fois les extensions PHP GD et Imagick.
Le traitement d’images peut être très gourmand en CPU et en mémoire. Pour des opérations lourdes, évitez de les exécuter pendant une requête HTTP et déléguez-les à un job de queue.
Cette fonctionnalité est disponible à partir de Laravel v13.20.0. Si vous utilisez une version plus ancienne, mettez le framework à jour avec composer update.

Installation

Avant d’utiliser le traitement d’images, installez le package Intervention Image via Composer.
Vérifiez également que l’extension PHP GD ou Imagick est installée selon le driver que vous souhaitez utiliser.

Configuration

Le fichier de configuration est config/image.php. S’il n’existe pas, publiez-le via la commande Artisan.
Le driver par défaut peut être défini dans le fichier de configuration ou via la variable d’environnement IMAGE_DRIVER. Les drivers pris en charge sont gd et imagick.

Charger une image

La façade Image propose plusieurs méthodes pour créer une instance d’image depuis diverses sources. Le contenu de l’image est chargé de façon paresseuse : il n’est effectivement lu qu’au moment du traitement ou de la demande des octets.

Fichier téléversé

Pour récupérer une image téléversée depuis la requête, utilisez la méthode image. Si le fichier est absent, null est renvoyé.
Pour créer l’instance depuis un UploadedFile, utilisez fromUpload.
Depuis une instance créée à partir d’un fichier téléversé, la méthode file permet de récupérer le fichier d’origine.

Fichier du stockage

Pour créer une instance à partir d’un fichier situé sur un disque de système de fichiers, utilisez fromStorage. Le premier argument est le chemin, le second le nom du disque.
La façade Storage propose également une méthode image.

Autres sources

Vous pouvez aussi partir d’octets, d’un chemin local, d’une URL ou d’une chaîne Base64.

Transformer une image

Les instances d’image sont immuables. Chaque méthode renvoie une nouvelle instance dans laquelle la transformation a été ajoutée au pipeline de traitement, ce qui permet le chaînage. Les transformations sont appliquées dans l’ordre d’ajout, et l’encodage n’est effectué qu’à la toute fin.

Redimensionnement

Autres transformations

Transformations conditionnelles

Les instances d’image supportent le trait Conditionable : when / unless permettent d’appliquer des transformations sous condition.

Encodage

Par défaut, l’encodage utilise le format d’origine. Pour convertir vers un autre format, utilisez :
La méthode quality fixe la qualité de sortie (1 à 100).
optimize est un raccourci pour convertir le format et définir la qualité. Par défaut : WebP, qualité 70.
Vous pouvez également obtenir des octets bruts, du Base64 ou une Data URI.

Enregistrer une image

La méthode store sauvegarde l’image sur un disque de fichiers. Laravel génère un nom unique et renvoie le chemin où l’image a été enregistrée.
Pour préciser le nom de fichier, utilisez storeAs.
Pour une visibilité public, utilisez storePublicly / storePubliclyAs.
En cas d’échec, false est renvoyé.

Obtenir des informations sur l’image

Les méthodes mimeType, extension, dimensions, width et height renvoient des informations sur l’image telle qu’elle sera après traitement (par exemple, après cover(400, 400), width() renvoie 400).

Drivers personnalisés

Le gestionnaire d’images de Laravel hérite de Illuminate\Support\Manager : la méthode extend permet d’enregistrer un driver personnalisé. Le driver doit implémenter l’interface Illuminate\Contracts\Image\Driver. Sa méthode process reçoit les octets d’origine et le pipeline, et renvoie les octets de l’image traitée.
L’enregistrement se fait dans la méthode boot d’un service provider.
Pour indiquer un driver sur une image particulière, utilisez using.

Transformations personnalisées

Vous pouvez définir une transformation personnalisée en implémentant l’interface Illuminate\Contracts\Image\Transformation.
Enregistrez son handler dans la méthode boot d’un service provider.
Une fois enregistrée, appliquez-la via transform.
Dernière modification le 2 août 2026