A partir de PHP 5.1, il est possible de faire des effets assez sympathiques sur les images.
Il est par exemple possible de créer un effet de gravure sur une image.
Code :
$img=imagecreatefromgif("php.gif");
$engrave = array(array(2,0,0),array(0,1,0),array(0,0,-1))
imageconvolution($img, $engrave, 1, 127);
imagepng($img, "engrave_php.png", 9);
ce qui a pour effet, sur le logo php :

j'éviterai de rentrer dans les formules mathématiques, par respect pour les non matheux (et parce que je n'en suis pas un !!)
mais, la fonction imageconvolution permet d'appliquer une matrice de la convolution 3x3, en utilisant la division de coefficient et l'excentrage.
le premier argument passé est l'image, le second la matrice
le troisieme est le coefficient, et le quatrieme l'excentrage.
cette fonction permet evidemment également d'enormes autres possibilités.
voici un exemple.
Code :
$img = imagecreatetruecolor(150,40);
imagestring($img, 5, 10, 10, 'Gaussian Blur Text', 0x00ff00);
$gaussian = array(array(1.0,2.0,1.0),array(2.0,4.0,2.0),array(1.0,2.0,1.0));
imageconvolution($img,$gaussian, 16, 0);
imagestring($img, 5, 10, 20, 'Gaussian Blur Text', 0x00ff00);
imagejpeg($img, "gd_gaussian_text.jpeg", 80);@@

et ce ne sont que deux des infinités de possibilités realisables.
Une autre fonction sympathique disponible depuis la version 5.1 de PHP, est imagefilter, qui permet tout simplement, d'appliquer un filtre sur une image.
elle prends les parametres suivants :
- ressource de l'image
- type de filtre à appliquer
- arguments (et infinis)
La fonction appliquera donc le filtre donné, en passant les arguments donnés à l'image.
les filtres disponibles sont :
- IMG_FILTER_NEGATE : renverse toutes les couleurs de l'image.
- IMG_FILTER_GRAYSCALE : convertit l'image en grayscale.
- IMG_FILTER_BRIGHTNESS : modifie la luminosité de l'image. Utilisez le paramètre args1 pour définir la luminosité.
- IMG_FILTER_CONTRAST : modifie le contraste de l'image. Utilisez le paramètre args1 pour définir le contraste.
- IMG_FILTER_COLORIZE : Identique au paramètre IMG_FILTER_GRAYSCALE excepté que vous pouvez spécifier une couleur. Utilisez trois arguments séparés dans les paramètres args1, args2 et args3 sous la forme red, blue, green. L'intervalle pour chaque couleur est 0 - 255.
- IMG_FILTER_EDGEDETECT : utilise la détection des bords pour les mettre en évidence dans l'image.
- IMG_FILTER_EMBOSS : grave l'image en relief.
- IMG_FILTER_GAUSSIAN_BLUR : brouille l'image en utilisant la méthode gaussienne.
- IMG_FILTER_SELECTIVE_BLUR : brouille l'image.
- IMG_FILTER_MEAN_REMOVAL : son utilisation signifie le déplacement pour réaliser un effet "peu précis".
- IMG_FILTER_SMOOTH : rend l'image lissoir (smooth). Utilisez le paramètre args1 pour définir le degré de lissoir.
je vous laisse une minute pour imaginer toutes les possibilités de ces deux fonctions, et voyons un exemple, avec le filtre edgedetect.
Code :
$im = imagecreatefromjpeg('salzburg.jpeg');
imagefilter($im, IMG_FILTER_EDGEDETECT);
imagejpeg($im, 'salzburg_edges.jpeg');
Ceci va donc mettre en évidence les traits de l'image.
et l'effet est flagrant.
l'image avant ...

... et l'image apres