
Lorsque vous créez un site web en Laravel (ou tout autre framework basé sur PHP) et que les utilisateurs téléchargent des images, vous utiliserez probablement une bibliothèque pour manipuler et traiter ces images. Les appareils photo des téléphones portables capturant des images plus grandes et de meilleure résolution, les images brutes qui sont téléchargées peuvent rapidement remplir l’espace disponible sur le disque dur et causer des problèmes de performance sur le site web.
Bien que PHP dispose de bibliothèques de traitement d’images telles que GD et Imagick, celles-ci ne sont pas toujours faciles à utiliser. Il existe un certain nombre de bibliothèques tierces qui facilitent le traitement des images.
Dans cet article, nous allons utiliser Spatie Image, une bibliothèque PHP de traitement d’images développée par Spatie, qui crée un certain nombre de bibliothèques open source pour Laravel et PHP. Elle fournit une interface facile à utiliser pour les manipulations d’images courantes telles que le redimensionnement, le recadrage et l’ajout d’effets.
Installation et utilisation de base
L’installation se fait à l’aide d’une commande composer assez simple :
composer require Spatie Image
Vous pouvez ensuite utiliser la classe Image
pour charger et manipuler des images.
use Spatie\Image\Image;
$image = Image::load('example.jpg)
->width(50)
->save();
L’appel à save
sans aucun paramètre écrase le fichier existant. Si vous souhaitez enregistrer dans un nouveau fichier, vous devez transmettre le nouveau chemin d’accès au fichier à la méthode save
. Vous pouvez enregistrer dans un format de fichier différent en modifiant l’extension.
use Spatie\Image\Image;
$image = Image::load('example.jpg)
->save('example.png');
Redimensionner une image en PHP
Spatie Image propose plusieurs façons de redimensionner une image.
Largeur et hauteur
Les fonctions width
et height
prennent comme paramètres les dimensions souhaitées en pixels et redimensionnent l’image en conséquence. L’image redimensionnée sera contenue dans les dimensions données $width
et $height
en respectant le rapport d’aspect d’origine.
Image::load('example.png')
->width(300)
->height(250)
->save();
Redimensionner
La fonction resize agit comme un raccourci, permettant de définir la largeur et la hauteur à l’aide d’une seule méthode.
Image::load('example.png')
->resize(300, 250)
->save();
Ajuster
La fonction Fit te permet de redimensionner l’image à une largeur et une hauteur données, mais donne un peu plus de contrôle sur la façon dont l’image est redimensionnée.
Fit::Contain
redimensionne l’image pour qu’elle tienne dans les limites de la largeur et de la hauteur sans la recadrer, la déformer ou modifier le rapport hauteur/largeur.Fit::Max
redimensionne l’image pour qu’elle tienne dans les limites de la largeur et de la hauteur sans la recadrer, la déformer ou modifier le rapport hauteur/largeur, et n’augmente pas la taille de l’image si elle est plus petite que la taille de sortie.Fit::Fill
redimensionne l’image pour qu’elle tienne dans les limites de largeur et de hauteur sans la recadrer ni la déformer, et remplit l’espace restant avec la couleur d’arrière-plan (définie à l’aide de la fonctionbackground
). L’image obtenue correspondra aux dimensions imposées.Fit::Stretch
étire l’image pour qu’elle corresponde exactement aux dimensions imposées. L’image résultante remplira les dimensions et ne conservera pas le rapport d’aspect de l’image d’entrée.Fit::Crop
redimensionne l’image pour remplir les limites de largeur et de hauteur et recadre les données excédentaires. L’image résultante correspondra aux contraintes de largeur et de hauteur sans déformer l’image.
Recadrer
En appelant la méthode crop
, une partie de l’image sera recadrée aux dimensions (pixels) données par $width
et $height
. Utilisez $cropMethod
pour spécifier la partie à découper.
Les valeurs CropPosition
s suivantes sont disponibles dans l’énumération : TopLeft
, Top
, TopRight
, Left
, Center
, Right
, BottomLeft
, Bottom
, BottomRight
.
Image::load('example.jpg')
->crop(250, 250, CropPosition::TopRight)
->save();
Manipulation de l’image
Spatie Image propose un certain nombre d’autres méthodes pour manipuler une image.
Ajustements
Pour régler la luminosité, le contraste et le gamma de l’image.
Image::load('example.jpg')
->brightness(-20)
->save();
Effets
Pour ajouter des effets tels que flou, pixellisation, niveaux de gris et sépia à l’image.
Image::load('example.jpg')
->blur(20)
->save();
Filigrane
Pour ajouter une autre image en filigrane sur l’image.
Image::load('example.jpg')
->watermark('watermark.png', AlignPosition::center)
->save();
Texte
Pour ajouter du texte à l’image.
Image::load('example.jpg')
->text('Hello!')
->save();
Bien entendu, vous pouvez combiner toutes ces manipulations en un seul appel. Par exemple, si nous voulons créer une petite version en niveaux de gris de l’image, nous pourrions faire quelque chose comme ceci :
Image::load('example.jpg')
->resize(64, 64)
->greyscale()
->brighten(20)
->save();
Vous pouvez consulter la documentation ici pour plus de détails sur cette bibliothèque de code.