|
|
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. |
|
|