Traitement des images en PHP : guide complet sur GD et Imagick

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

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

Recommendations