Fonctions GD et images
PHP Manual

imagefilter

(PHP 5, PHP 7)

imagefilterApplique un filtre à une image

Description

bool imagefilter ( resource $image , int $filtertype [, int $arg1 [, int $arg2 [, int $arg3 [, int $arg4 ]]]] )

imagefilter() applique le filtre filtertype à l'image en utilisant les paramètres args1, args2 et args3 lorsque cela est nécessaire.

Liste de paramètres

image

Une ressource d'image, retournée par une des fonctions de création d'images, comme imagecreatetruecolor().

filtertype

Le paramètre filtertype peut prendre l'une des valeurs suivantes :

  • 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é. L'intervalle de la luminosité est de -255 à 255.
  • 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, green, blue et arg4 pour le canal alpha. 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 lissée (smooth). Utilisez le paramètre args1 pour définir le degré de lissoir.
  • IMG_FILTER_PIXELATE : applique un effet de pixelisation à l'image; utilise arg1 pour indiquer la taille de bloc, et arg2 pour indiquer le mode de pixelisation.

arg1

  • IMG_FILTER_BRIGHTNESS : degré de luminosité.
  • IMG_FILTER_CONTRAST : degré du contraste.
  • IMG_FILTER_COLORIZE : Valeur du composant rouge.
  • IMG_FILTER_SMOOTH : degré du lissé.
  • IMG_FILTER_PIXELATE: taille de bloc en pixels.

arg2

  • IMG_FILTER_COLORIZE : Valeur du composant vert.

arg3

  • IMG_FILTER_COLORIZE : Valeur du composant bleu.

arg4

  • IMG_FILTER_COLORIZE : canal Alpha. Une valeur entre 0 et 127. 0 signifie totalement opaque, tandis que 127 signifie totalement transparent.
  • IMG_FILTER_PIXELATE: s'il faut utiliser un effet de pixelisation avancé ou non (par défaut, FALSE).

Valeurs de retour

Cette fonction retourne TRUE en cas de succès ou FALSE si une erreur survient.

Historique

Version Description
5.3.0 Support de la pixelisation (IMG_FILTER_PIXELATE) ajouté.
5.2.5 Le support du canal Alpha pour la constante IMG_FILTER_COLORIZE a été ajouté.

Exemples

Exemple #1 Exemple avec imagefilter()

<?php
$im 
imagecreatefrompng('dave.png');

if(
$im && imagefilter($imIMG_FILTER_GRAYSCALE))
{
    echo 
'Image convertie en grayscale.';

    
imagepng($im'dave.png');
}
else
{
    echo 
'La conversion en grayscale a échoué.';
}

imagedestroy($im);
?>

Exemple #2 Exemple avec imagefilter()

<?php
$im 
imagecreatefrompng('sean.png');

if(
$im && imagefilter($imIMG_FILTER_BRIGHTNESS20))
{
    echo 
'La luminosité de l\'image a été modifiée.';
    
imagepng($im'sean.png');
    
imagedestroy($im);
}
else
{
    echo 
'Echec lors de la modification de la luminosité.';
}
?>

Exemple #3 Exemple avec imagefilter()

<?php
$im 
imagecreatefrompng('philip.png');

/* R, G, B, donc 0, 255, 0 correspond au vert */
if($im && imagefilter($imIMG_FILTER_COLORIZE02550))
{
    echo 
'L\'image a été ombragée en vert avec succès.';
    
imagepng($im'philip.png');
    
imagedestroy($im);
}
else
{
    echo 
'Echec lors de la modification de l\'ombrage.';
}
?>

Exemple #4 Exemple d'image en négatif avec imagefilter()

<?php
// Définition de notre fonction "négatif" afin qu'elle soit portable
// également sur les versions de PHP qui n'ont pas la fonction imagefilter()
function negate($im)
{
    if(
function_exists('imagefilter'))
    {
        return 
imagefilter($imIMG_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($im255 $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 convertie avec succès en couleur négative.';

    
imagejpeg($im'kalle.jpg'100);
    
imagedestroy($im);
}
else
{
    echo 
'Echec lors de la conversion en couleur négative.';
}
?>

Exemple #5 Exemple de pixelisation avec imagefilter()

<?php
// Chargement du logo PHP, nous avons besoin de deux instances.
$logo1 imagecreatefrompng('./php.png');
$logo2 imagecreatefrompng('./php.png');

// Crée une image sur laquelle nous voulons montrer les différences
$output imagecreatetruecolor(imagesx($logo1) * 2imagesy($logo1));

// Applique la pixelisation à chaque instance, avec un bloc de 3
imagefilter($logo1IMG_FILTER_PIXELATE3);
imagefilter($logo2IMG_FILTER_PIXELATE3true);

// Fusion des différences dans l'image finale
imagecopy($output$logo10000imagesx($logo1) - 1imagesy($logo1) - 1);
imagecopy($output$logo2imagesx($logo2), 000imagesx($logo2) - 1imagesy($logo2) - 1);
imagedestroy($logo1);
imagedestroy($logo2);

// Affichage des différences
header('Content-Type: image/png');
imagepng($output);
imagedestroy($output);
?>

L'exemple ci-dessus va afficher quelque chose de similaire à :

Affichage de l'exemple : imagefilter()

Notes

Voir aussi


Fonctions GD et images
PHP Manual