Le langage PHP permet de manipuler les images depuis de nombreuses années
et pour appliquer des effets spéciaux sur celle-ci, nous étions
obligé souvent d’effectuer de nombreuses lignes de programmation.
Depuis la version PHP 5, une fonction est apparue : « IMAGEFILTER »
permettant d’obtenir des effets avec la même qualité que
des logiciels de dessins.
Cette fonction permet de personnaliser l’aspect visuel de votre site ou aussi de réaliser une galerie photos différentes des autres.
Nous allons voir :
<?php
$image = @imagecreatefromjpeg('paysage.jpg'); // Charge l'image JPG
imagejpeg($image); // Affiche l'image
imagedestroy($image); // libère l'image
?>
Voici le résultat :
imagefilter ( resource $image , int $filtertype [, int $arg1 [, int $arg2 [, int $arg3 ]]] )
Cette fonction se décompose en 3 critères
image : nom de l'image
filtertype : le filtre de son choix
arg : les critères si nécessaire par rapport au type de filtre
choisi. La tranche de nuance permet d'effectuer de -255 à +255
Pour illustrer nos différents exemples, nous partirons sur le paysage que nous avons affiché ci-dessus :
<?php
$nom_fichier='paysage.jpg';
$valeur=0;
$image = @imagecreatefromjpeg($nom_fichier);
imagefilter($image, IMG_FILTER_BRIGHTNESS, $valeur);
imagejpeg($image);
imagedestroy($image);
?>
Voici quelques resultats avec différentes valeurs :
$valeur=-100 ![]() |
$valeur=-50 ![]() |
$valeur=100 ![]() |
$valeur=50 ![]() |
<?php
$nom_fichier='paysage.jpg';
$r=100;
$v=0;
$b=-50;
$image = @imagecreatefromjpeg($nom_fichier);
imagefilter($image,IMG_FILTER_COLORIZE,$r,$v,$b);
imagejpeg($image);
imagedestroy($image);
?>
Voici quelques résultats avec quelques valeurs différentes :
R : 0 V :-100 B : 0![]() |
R : 0 V :100 B : 50![]() |
R : 100 V : 0 B : -50![]() |
La valeur possible sera comprise entre -255 et 255 qui représente
255 : Eclaircir l'image avec un maximum vers le blanc (effet de brillance)
0 : Valeur par défaut. Couleur inchangée
-255 : Assombrir l'image au maximum vers le noir (effet sombre)
<?php
$nom_fichier='paysage.jpg';
$valeur=-50;
$image = @imagecreatefromjpeg($nom_fichier);
imagefilter($image,IMG_FILTER_CONTRAST,$valeur);
imagejpeg($image);
imagedestroy($image);
?>
Voici quelques résultats :
-100![]() |
-50![]() |
15![]() |
<?php
$nom_fichier='paysage.jpg';
$image = @imagecreatefromjpeg($nom_fichier);
imagefilter($image, IMG_FILTER_EDGEDETECT);
imagejpeg($image);
imagedestroy($image);
?>
Pour obtenir le résultat suivant :
<?php
$nom_fichier='paysage.jpg';
$image = @imagecreatefromjpeg($nom_fichier); /* Tentative d'ouverture */
imagefilter($image, IMG_FILTER_EMBOSS);
imagejpeg($image);
imagedestroy($image);
?>
Pour obtenir le résultat suivant :
<?php
$nom_fichier='paysage.jpg';
$image = @imagecreatefromjpeg($nom_fichier);
imagefilter($image, IMG_FILTER_GAUSSIAN_BLUR);
imagejpeg($image);
imagedestroy($image);
?>
Pour obtenir le résultat suivant :
<?php
$nom_fichier='paysage.jpg';
$image = @imagecreatefromjpeg($nom_fichier);
imagefilter($image, IMG_FILTER_SELECTIVE_BLUR);
imagejpeg($image);
imagedestroy($image);
?>
Pour obtenir le résultat suivant :
La valeur possible sera comprise entre -255 et 255 qui représente
255 : Eclaircir l'image avec un maximum vers le blanc (effet de brillance)
0 : Valeur par défaut. Couleur inchangée
-255 : Assombrir l'image au maximum vers le noir (effet sombre)
<?php
$nom_fichier='paysage.jpg';
$valeur=50;
$image = @imagecreatefromjpeg($nom_fichier);
imagefilter($image, IMG_FILTER_SMOOTH, 10);
imagejpeg($image);
imagedestroy($image);
?>
Voici quelques résultats avec des valeurs différentes :
100![]() |
50![]() |
-100![]() |
-50![]() |
<?php
$nom_fichier='paysage.jpg';
$image = @imagecreatefromjpeg($nom_fichier);
imagefilter($image, IMG_FILTER_GRAYSCALE);
imagejpeg($image);
imagedestroy($image);
?>
Pour obtenir le résultat suivant :
<?php
$nom_fichier='paysage.jpg';
$image = @imagecreatefromjpeg($nom_fichier);
imagefilter($image, IMG_FILTER_NEGATE);
imagejpeg($image);
imagedestroy($image);
?>
Pour obtenir le résultat suivant :
<?php
$nom_fichier='paysage.jpg';
$image = @imagecreatefromjpeg($nom_fichier);
imagefilter($image, IMG_FILTER_MEAN_REMOVAL);
imagejpeg($image);
imagedestroy($image);
?>
Pour obtenir le résultat suivant :
Maintenant que nous avons vu l’ensemble des filtres possibles pour cette fonction, nous pouvons appliquer plusieurs filtres sur une même image
<?php
$r=255;$v=0;$b= 0;
$r=0;$v=255;$b= 0;
$r=0;$v=0;$b= 255;
$nom_fichier='livreeni.jpg';
$image = @imagecreatefromjpeg($nom_fichier);
imagefilter($image, IMG_FILTER_GRAYSCALE);
imagefilter($image, IMG_FILTER_COLORIZE, $r,$v,$b);
imagejpeg($image);
imagedestroy($image);
?>
Pour obtenir le résultat suivant :
Image d’origine![]() |
r=255 v=0 b= 0![]() |
r=0 v=255 b= 0![]() |
r=0 v=0 b= 255![]() |
Détecte les différents de l’image avec le filtre IMG_FILTER_EDGEDETECT
Transformer l’image en Relief avec le filtre IMG_FILTER_EMBOSS
<?php
$nom_fichier='afup.jpg';
$image = @imagecreatefromjpeg($nom_fichier);
imagefilter($image, IMG_FILTER_EDGEDETECT);
imagefilter($image, IMG_FILTER_EMBOSS);
imagejpeg($image);
imagedestroy($image);
?>
Pour obtenir le résultat suivant :
Image origine![]() |
Image avec effet![]() |
Brouiller l’image avec le filtre IMG_FILTER_GAUSSIAN_BLUR
Brouille un peu plus avec le filtre IMG_FILTER_SELECTIVE_BLUR
<?php
$nom_fichier='php_logo.jpg';
$image = @imagecreatefromjpeg($nom_fichier);
Imagefilter ($image, IMG_FILTER_GAUSSIAN_BLUR);
imagefilter ($image , IMG_FILTER_SELECTIVE_BLUR );
imagejpeg($image);
imagedestroy($image);
?>
Pour obtenir le résultat suivant :
Image origine![]() |
Image avec effet![]() |
Nous allons effectuer l’opération en 2 temps :
Transformer une image en gris avec le filtre IMG_FILTER_GRAYSCALE
Ressortir les niveaux de couleurs avec le filtre IMG_FILTER_NEGATE
<?php
$nom_fichier='paysage.jpg';
$image = @imagecreatefromjpeg($nom_fichier);
Imagefilter ($image, IMG_FILTER_GRAYSCALE);
imagefilter ( $image , IMG_FILTER_NEGATE );
imagejpeg($image);
imagedestroy($image);
?>
Pour obtenir le résultat suivant :
Image origine![]() |
Image avec effet![]() |
Il est possible de réaliser tous sortes d’effets supplémentaires
avec l’ensemble des filtres qui nous sont proposés. Il ne reste
plus qu’à vous d’effectuer des tests.