Traitement des images en PHP : les bibliothèques GD et Imagick
Le traitement des images est l'une des tâches clés du développement web. En PHP, deux bibliothèques principales sont utilisées : GD (intégrée) et Imagick (interface pour ImageMagick). Dans cet article, nous explorerons leurs fonctionnalités, apprendrons à redimensionner, recadrer, ajouter des filigranes et optimiser les images.
1. La bibliothèque GD
GD est une extension standard de PHP, disponible sur la plupart des hébergements. Elle permet de créer, modifier et enregistrer des images aux formats JPEG, PNG, GIF, WebP.
Activation et vérification :
<?php// Vérifions si l'extension GD est installéeif (extension_loaded('gd') && function_exists('gd_info')) { echo "GD est installée : "; print_r(gd_info());} else { echo "GD n'est pas trouvée";}?>1.1 Redimensionnement d'image (resize)
Le scénario le plus courant est la réduction d'une image aux dimensions souhaitées tout en conservant les proportions.
<?phpfunction resizeImage($sourcePath, $destPath, $newWidth, $newHeight) { // Obtenons les dimensions de l'image source list($width, $height, $type) = getimagesize($sourcePath); // Créons une ressource à partir du fichier source switch ($type) { case IMAGETYPE_JPEG: $source = imagecreatefromjpeg($sourcePath); break; case IMAGETYPE_PNG: $source = imagecreatefrompng($sourcePath); break; case IMAGETYPE_GIF: $source = imagecreatefromgif($sourcePath); break; default: return false; } // Créons une nouvelle image $newImage = imagecreatetruecolor($newWidth, $newHeight); // Préservons la transparence pour PNG/GIF imagealphablending($newImage, false); imagesavealpha($newImage, true); // Copions et redimensionnons imagecopyresampled($newImage, $source, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height); // Enregistrons le résultat imagejpeg($newImage, $destPath, 85); // Qualité 85% // Libérons la mémoire imagedestroy($source); imagedestroy($newImage); return true;}
// Exemple d'utilisationresizeImage('photo.jpg', 'photo_thumb.jpg', 300, 200);?>1.2 Recadrage d'image (crop)
Le recadrage permet d'extraire la partie centrale d'une image aux dimensions souhaitées.
<?phpfunction cropCenter($sourcePath, $destPath, $cropWidth, $cropHeight) { list($width, $height) = getimagesize($sourcePath); $source = imagecreatefromjpeg($sourcePath); // Calculons les coordonnées du centre $x = ($width - $cropWidth) / 2; $y = ($height - $cropHeight) / 2; $newImage = imagecreatetruecolor($cropWidth, $cropHeight); imagecopyresampled($newImage, $source, 0, 0, $x, $y, $cropWidth, $cropHeight, $cropWidth, $cropHeight); imagejpeg($newImage, $destPath, 90); imagedestroy($source); imagedestroy($newImage);}
cropCenter('photo.jpg', 'photo_cropped.jpg', 400, 400);?>1.3 Ajout d'un filigrane
Ajout de texte ou d'un logo par-dessus l'image.
<?phpfunction addWatermarkText($sourcePath, $destPath, $text = "© PythonLib.ru") { $source = imagecreatefromjpeg($sourcePath); $width = imagesx($source); $height = imagesy($source); // Couleur du texte (blanc avec transparence) $color = imagecolorallocatealpha($source, 255, 255, 255, 50); // Taille de la police (utilisons la police intégrée) $fontSize = 5; $x = 10; $y = $height - 20; imagestring($source, $fontSize, $x, $y, $text, $color); imagejpeg($source, $destPath, 90); imagedestroy($source);}
addWatermarkText('photo.jpg', 'photo_watermarked.jpg');?>2. La bibliothèque Imagi
Aussi dans la bibliothèque
Envoi d'email en Rust : bibliothèques lettre et mailparse pour les courriels
Envoi de SMS en Java : aperçu des bibliothèques API et outils
GraphQL pour C# (.NET) : Guide complet de la bibliothèque GraphQL.NET