PRATIQUE PHP 
Simplifier le traitement d'image de GD
 
Deux classes à découvrir pour manipuler les PNG de manière plus logique : bruit, négatif, gamma, contraste, luminosité... (22/11/2005)
  Forum

Réagissez dans les forums de JDN Développeurs

La bibliothèque GD, interne à PHP et dédiée à la création et la modification d'images dans les principaux formats (GIF, JPEG, PNG), n'a pas pour autant la réputation de facilité d'utilisation. Entre le grand nombre de fonctions, celui de leurs paramètres respectifs, et la gestion délicate des couleurs et des autres composantes d'une image, parvenir à un résultat satisfaisant peut tenir du miracle.

C'est pourquoi l'approche présentée par Stoyan Stefanov sur son blog est intéressante. Il a choisi de créer deux classes de traitement d'image pour encapsuler les comportements de base d'un fichier graphique (au format PNG par défaut). Tout d'abord, une classe Pixel(), qui permet de traiter proprement le composant le plus simple de l'image.

<?php
class Pixel {
  function Pixel($r, $g, $b) {
    $this->r = ($r > 255) ? 255 : (($r < 0) ? 0 : (int)($r));
    $this->g = ($g > 255) ? 255 : (($g < 0) ? 0 : (int)($g));
    $this->b = ($b > 255) ? 255 : (($b < 0) ? 0 : (int)($b));
    }
  }
?>


Ensuite, une classe de traitement, Image_PixelOperations(), qui à partir de la classe précédente, Pixel, ouvre le fichier cible, traite chaque pixel en fonction d'une fonction donnée, et écrit le pixel traité dans un nouveau fichier PNG.

Ceci fait, Stefanov offre un bon nombre de traitement de l'image, avec des exemples parfois élaborés, et le tout parfaitement configurable : ajout de bruit, modification de la luminosité, traitement des couleurs (échange, retrait, amélioration), négatif, dégradé de gris, noir & blanc, contraste, correction gamma...

Le travail pixel à pixel étant plus simple à appréhender que le travail sur une image globale, Stefanov facilite grandement le traitement de PNG avec ses deux classes.
 
Xavier Borderie, JDN Développeurs
 
 
Accueil | Haut de page