(PHP 5, PHP 7, PHP 8)
imagefilter — Applique un filtre à une image
  imagefilter() applique le filtre donné
   filter sur l'image.
  
imageUn objet GdImage, retournée par une des fonctions de création d'images, comme imagecreatetruecolor().
filter
       filter peut être l'un des éléments suivants :
       
IMG_FILTER_NEGATE : Inverse toutes les couleurs de
          l'image.
         
        IMG_FILTER_GRAYSCALE : Convertit l'image en
          niveaux de gris en changeant les composantes rouge, verte et bleue en leur
          somme pondérée en utilisant les mêmes coefficients que le calcul luma REC.601 (Y').
          Les composantes alpha sont conservées. Pour les images de la palette, le
          résultat peut être différent en raison des limitations de la palette.
         
        IMG_FILTER_BRIGHTNESS : Modifie la luminosité
          de l'image. Utilisez args pour définir le niveau de
          luminosité. La plage de luminosité est comprise entre -255 et 255.
         
        IMG_FILTER_CONTRAST : Modifie le contraste de
          l'image. Utilisez args pour définir le niveau de
          contraste.
         
        IMG_FILTER_COLORIZE : similaire à
          IMG_FILTER_GRAYSCALE, sauf qu'il est possible de spécifier la
          couleur. Utilisez args, arg2 et
          arg3 sous la forme
          red, green,
          blue et arg4 pour le canal
          alpha. La plage de chaque couleur est comprise entre 0 et 255.
         
        IMG_FILTER_EDGEDETECT : Utilise la détection des contours pour
          mettre en évidence les contours de l'image.
         
        IMG_FILTER_EMBOSS : Permet d'embosser l'image.
         
        IMG_FILTER_GAUSSIAN_BLUR : Floute l'image à l'aide de la
          méthode gaussienne.
         
        IMG_FILTER_SELECTIVE_BLUR : Floute l'image.
         
        IMG_FILTER_MEAN_REMOVAL : Utilise la suppression de la moyenne
          pour obtenir un effet "croquis".
         
        IMG_FILTER_SMOOTH : Rend l'image plus lisse.
          Utilisez args pour définir le niveau de lissage.
         
        IMG_FILTER_PIXELATE : Applique un effet de pixellisation 
          à l'image, utilisez args pour définir la taille du bloc
          et arg2 pour définir le mode d'effet de pixellisation.
         
        IMG_FILTER_SCATTER : Applique un effet de dispersion 
          à l'image, utilisez args et 
          arg2 pour définir l'intensité de l'effet et 
          arg3 pour n'appliquer l'effet que 
          sur certaines couleurs de pixels.
         
        args
IMG_FILTER_BRIGHTNESS : Niveau de luminosité.
         
        IMG_FILTER_CONTRAST : Niveau de contraste.
         
        IMG_FILTER_COLORIZE : Valeur du composant rouge.
         
        IMG_FILTER_SMOOTH : Niveau de lissage.
         
        IMG_FILTER_PIXELATE : Taille du bloc en pixels.
         
        IMG_FILTER_SCATTER : Niveau de soustraction de l'effet. 
          Il ne doit pas être supérieur ou égal au niveau d'addition défini avec 
          arg2.
         
        arg2
IMG_FILTER_COLORIZE : Valeur du composant vert.
         
        IMG_FILTER_PIXELATE : Utilisation ou non de l'effet de pixellisation 
          avancé (la valeur par défaut est false).
         
        IMG_FILTER_SCATTER : Niveau d'addition de l'effet.
         
        arg3
IMG_FILTER_COLORIZE : Valeur du composant bleu.
         
        IMG_FILTER_SCATTER : Tableau optionnel de valeurs de couleur indexées 
          pour appliquer l'effet.
         
        arg4
IMG_FILTER_COLORIZE canal Alpha, une valeur 
          entre 0 et 127. 0 indique une opacité totale tandis que 127 indique une 
          transparence totale.
         
        
   Cette fonction retourne true en cas de succès ou false si une erreur survient.
  
| Version | Description | 
|---|---|
| 8.0.0 | imageattend une instance de GdImage désormais;
  auparavant, une resourcegdétait attendue. | 
| 7.4.0 | La prise en charge de la dispersion ( IMG_FILTER_SCATTER) a été ajoutée. | 
Exemple #1 Exemple de niveaux de gris avec imagefilter()
<?php
$im = imagecreatefrompng('dave.png');
if($im && imagefilter($im, IMG_FILTER_GRAYSCALE))
{
    echo 'Image converted to grayscale.';
    imagepng($im, 'dave.png');
}
else
{
    echo 'Conversion to grayscale failed.';
}
imagedestroy($im);
?>
Exemple #2 Exemple de luminosité avec imagefilter()
<?php
$im = imagecreatefrompng('sean.png');
if($im && imagefilter($im, IMG_FILTER_BRIGHTNESS, 20))
{
    echo 'Image brightness changed.';
    imagepng($im, 'sean.png');
    imagedestroy($im);
}
else
{
    echo 'Image brightness change failed.';
}
?>
Exemple #3 Exemple de colorisation avec imagefilter()
<?php
$im = imagecreatefrompng('philip.png');
/* R, G, B, so 0, 255, 0 is green */
if($im && imagefilter($im, IMG_FILTER_COLORIZE, 0, 255, 0))
{
    echo 'Image successfully shaded green.';
    imagepng($im, 'philip.png');
    imagedestroy($im);
}
else
{
    echo 'Green shading failed.';
}
?>
Exemple #4 Exemple de négatif avec imagefilter()
<?php
// Defini la fonction negate afin qu'elle soit portable pour 
// les versions de php sans imagefilter()
function negate($im)
{
    if(function_exists('imagefilter'))
    {
        return imagefilter($im, IMG_FILTER_NEGATE);
    }
    for($x = 0; $x < imagesx($im); ++$x)
    {
        for($y = 0; $y < imagesy($im); ++$y)
        {
            $index = imagecolorat($im, $x, $y);
            $rgb = imagecolorsforindex($index);
            $color = imagecolorallocate($im, 255 - $rgb['red'], 255 - $rgb['green'], 255 - $rgb['blue']);
            imagesetpixel($im, $x, $y, $color);
        }
    }
    return(true);
}
$im = imagecreatefromjpeg('kalle.jpg');
if($im && negate($im))
{
    echo 'Image successfully converted to negative colors.';
    imagejpeg($im, 'kalle.jpg', 100);
    imagedestroy($im);
}
else
{
    echo 'Converting to negative colors failed.';
}
?>
Exemple #5 Exemple de pixellisation avec imagefilter()
<?php
// Charge le logo PHP, nous devons créer deux instances
// pour voir les différences
$logo1 = imagecreatefrompng('./php.png');
$logo2 = imagecreatefrompng('./php.png');
// Création de l'instance d'image sur laquelle nous voulons
// voir les différences
$output = imagecreatetruecolor(imagesx($logo1) * 2, imagesy($logo1));
// Applique la pixellisation sur chaque instance avec une
// taille de bloque de 3
imagefilter($logo1, IMG_FILTER_PIXELATE, 3);
imagefilter($logo2, IMG_FILTER_PIXELATE, 3, true);
// Fusionne les différences sur l'image de sortie
imagecopy($output, $logo1, 0, 0, 0, 0, imagesx($logo1) - 1, imagesy($logo1) - 1);
imagecopy($output, $logo2, imagesx($logo2), 0, 0, 0, imagesx($logo2) - 1, imagesy($logo2) - 1);
imagedestroy($logo1);
imagedestroy($logo2);
// Affiche les différences
header('Content-Type: image/png');
imagepng($output);
imagedestroy($output);
?>
Résultat de l'exemple ci-dessus est similaire à :
 
     
Exemple #6 Exemple de dispersion avec imagefilter()
<?php
// Charge l'image
$logo = imagecreatefrompng('./php.png');
// Applique un effet de diffusion très doux à l'image
imagefilter($logo, IMG_FILTER_SCATTER, 3, 5);
// Affiche l'image avec l'effet de dispersion
header('Content-Type: image/png');
imagepng($logo);
imagedestroy($logo);
?>
Résultat de l'exemple ci-dessus est similaire à :
 
     Note: Le résultat de
IMG_FILTER_SCATTERest toujours aléatoire.