Manipuler des images avec GD et Imagick en PHP

Dans le développement web, il est souvent nécessaire de manipuler des images pour afficher des avatars, des bannières, des miniatures ou tout autre type d’image sur votre site. PHP offre plusieurs librairies pour la gestion des images, notamment GD et Imagick. Dans cet article, nous allons vous présenter les principales fonctionnalités de ces deux librairies et vous donner des exemples de code pour les utiliser dans votre application PHP.

Utiliser la librairie GD en PHP

GD est une librairie PHP qui permet de manipuler des images en PHP. Elle est incluse dans la plupart des installations PHP par défaut, ce qui en fait une solution facile à utiliser et accessible. GD prend en charge les formats d’image suivants : JPG, PNG, GIF, BMP et WBMP.

Charger et afficher une image avec GD

Pour charger une image avec GD, vous pouvez utiliser la fonction imagecreatefrom(à en spécifiant le type d’image (jpg, png, gif, etc.). Cette fonction retourne une ressource GD qui représente l’image chargée en mémoire. Vous pouvez ensuite utiliser la fonction header et la fonction image() correspondant au format de l’image (imagejpeg, imagepng, imagegif, etc.) pour afficher l’image dans le navigateur.
<?php
// Charger l'image dans une ressource GD
$image = imagecreatefromjpeg('image.jpg');

// Afficher l'image
header('Content-Type: image/jpeg');
imagejpeg($image);

Redimensionner une image avec GD

Pour redimensionner une image avec GD, vous pouvez utiliser la fonction imagecopyresampled. Cette fonction permet de copier et de redimensionner une image GD en spécifiant les dimensions cibles et en utilisant une interpolation pour améliorer la qualité de l’image redimensionnée.

<?php
// Charger l'image dans une ressource GD
$image = imagecreatefromjpeg('image.jpg');

// Redimensionner l'image
$image_resized = imagecreatetruecolor(200, 200);
imagecopyresampled($image_resized, $image, 0, 0, 0, 0, 200, 200, imagesx($image), imagesy($image));

// Afficher l'image redimensionnée
header('Content-Type: image/jpeg');
imagejpeg($image_resized);

Ajouter du texte à une image avec GD

Pour ajouter du texte à une image avec GD, vous pouvez utiliser la fonction imagettftext. Cette fonction permet d’ajouter du texte à une image GD en spécifiant la police, la taille, l’angle et la couleur du texte.

<?php
// Charger l'image dans une ressource GD
$image = imagecreatefromjpeg('image.jpg');

// Ajouter du texte à l'image
$text_color = imagecolorallocate($image, 0, 0, 0);
imagettftext($image, 20, 0, 10, 30, $text_color, 'arial.ttf', 'Hello World !');

// Afficher l'image
header('Content-Type: image/jpeg');
imagejpeg($image);

Utiliser la librairie Imagick

Imagick est une autre librairie PHP pour la gestion des images. Elle offre des fonctionnalités plus avancées que GD, telles que la gestion des couches et des masques, la conversion de format, la détection des bords et la réduction de bruit. Imagick prend en charge un grand nombre de formats d’image, y compris les formats vectoriels comme SVG.

Pour utiliser Imagick, vous devez d’abord vérifier que l’extension PHP imagick est installée et activée sur votre serveur. Vous pouvez vérifier cela en exécutant la commande suivante :

php -m | grep imagick

Si Imagick est présent dans la liste des extensions chargées, vous pouvez utiliser les classes et les méthodes de la librairie dans votre code PHP. Sinon, vous devrez peut-être installer et activer l’extension Imagick sur votre serveur.

Charger et afficher une image avec Imagick

Pour charger une image avec Imagick, vous pouvez créer un objet de la classe Imagick en spécifiant le chemin de l’image. Cet objet représente l’image chargée en mémoire et vous pouvez utiliser ses méthodes pour manipuler l’image. Pour afficher l’image, vous pouvez simplement utiliser la fonction echo sur l’objet Imagick.

<?php
// Charger l'image dans un objet Imagick
$imagick = new Imagick('image.jpg');

// Afficher l'image
header('Content-Type: image/jpeg');
echo $imagick;

Redimensionner une image avec Imagick

Pour redimensionner une image avec Imagick, vous pouvez utiliser la méthode resizeImage de l’objet Imagick. Cette méthode permet de redimensionner l’image en spécifiant les dimensions cibles et en utilisant un filtre de resampling pour améliorer la qualité de l’image redimensionnée. Imagick propose plusieurs filtres de resampling, tels que FILTER_LANCZOS, FILTER_BOX ou FILTER_CUBIC.

<?php
// Charger l'image dans un objet Imagick
$imagick = new Imagick('image.jpg');

// Redimensionner l'image
$imagick->resizeImage(200, 200, Imagick::FILTER_LANCZOS, 1);

// Afficher l'image redimensionnée
header('Content-Type: image/jpeg');
echo $imagick;

Ajouter du texte à une image avec Imagick

Pour ajouter du texte à une image avec Imagick, vous pouvez utiliser la méthode annotateImage de l’objet Imagick. Cette méthode permet d’ajouter du texte à l’image en spécifiant la police, la taille, l’angle et la couleur du texte.

<?php
// Charger l'image dans un objet Imagick
$imagick = new Imagick('image.jpg');

// Ajouter du texte à l'image
$draw = new ImagickDraw();
$draw->setFont('arial.ttf');
$draw->setFontSize(20);
$draw->setFillColor('black');
$imagick->annotateImage($draw, 10, 30, 0, 'Hello World !');

// Afficher l'image
header('Content-Type: image/jpeg');
echo $imagick;

Conclusion

Dans cet article, nous avons présenté les principales fonctionnalités de la librairie GD et de la librairie Imagick pour la gestion des images en PHP. Nous avons vu comment charger et afficher une image, comment la redimensionner et comment y ajouter du texte. Vous pouvez maintenant utiliser ces exemples de code pour intégrer ces fonctionnalités dans votre application PHP. N’hésitez pas à explorer les autres méthodes et options proposées par ces deux librairies pour étendre encore plus les possibilités de traitement d’images en PHP.

Newsletter

Ne manquez jamais les nouveaux conseils, tutoriels et autres.

Pas de spam, jamais. Nous ne partagerons jamais votre adresse électronique et vous pouvez vous désabonner à tout moment.