imagefilter

(PHP 5, PHP 7)

imagefilterApplique un filtre à une image

Description

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

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

filtertype peut être l'un des suivants :

  • IMG_FILTER_NEGATE : Inverse toutes les couleurs de l'image.
  • IMG_FILTER_GRAYSCALE : Convertit l'image en échelle de gris en changeant les composants rouge, vert et bleu en leur somme pondérée à l'aide des mêmes coefficients que le calcul de la luminance REC.601 luma (Y'). Les composants alpha sont conservés. Pour les images de palette, le résultat peut différer en raison des limitations de palette.
  • IMG_FILTER_BRIGHTNESS : Modifie la luminosité de l'image. Utilisez args1 pour définir le niveau de luminosité. L'intervalle de la luminosité est de -255 à 255.
  • IMG_FILTER_CONTRAST : Modifie le contraste de l'image. Utilisez args1 pour définir le niveau de contraste.
  • IMG_FILTER_COLORIZE : Comme IMG_FILTER_GRAYSCALE sauf que vous pouvez spécifier la couleur. args1, args2 et args3 sous la forme red, green, blue et arg4 pour le canal alpha. L'intervalle pour chaque couleur est de 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 : Trouble l'image en utilisant la méthode gaussienne.
  • IMG_FILTER_SELECTIVE_BLUR : Trouble 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 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.
  • IMG_FILTER_SCATTER: Applique un effet de dispersion à l'image, utilisez arg1 et arg2 pour définir la force de l'effet et additionellement arg3 pour appliquer l'effet uniquement sur les pixels de couleur sélectionné.

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.
  • IMG_FILTER_SCATTER : Niveau de soustraction d'effet. Ceci ne doit pas être plus grand ou égal que le niveau d'addition défini avec arg2.

arg2

  • IMG_FILTER_COLORIZE : Valeur du composant vert.
  • IMG_FILTER_PIXELATE : Utiliser ou non l'effet de pixellisation avancé (valeur par défaut FALSE).
  • IMG_FILTER_SCATTER : Niveau d'addition d'effet.

arg3

  • IMG_FILTER_COLORIZE : Valeur du composant bleu.
  • IMG_FILTER_SCATTER : Valeurs de couleur indexées sur un tableau facultatif auxquelles appliquer l'effet.

arg4

  • IMG_FILTER_COLORIZE : canal Alpha. Une valeur entre 0 et 127. 0 signifie totalement opaque, tandis que 127 signifie totalement transparent.

Valeurs de retour

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

Historique

Version Description
7.4.0 Support de dispersion (IMG_FILTER_SCATTER) ajouté.
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() pixélixé

Exemple #6 Exemple de dispersion imagefilter()

<?php
// Charger l'image
$logo imagecreatefrompng('./php.png');

// Applique une dispersion très douce à l'image
imagefilter($logoIMG_FILTER_SCATTER35);

// Afficher l'image avec l'effet de dispersion
header('Content-Type: image/png');
imagepng($logo);
imagedestroy($logo);
?>

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

Affichage de l'exemple : dispersion de imagefilter()

Notes

Note: Le résultat de IMG_FILTER_SCATTER est toujours aléatoire.

Voir aussi

  • imageconvolution() - Applique une matrice de la convolution 3x3, en utilisant le coefficient et l'excentrage