(PHP 5, PHP 7)
imagefilter — Applique un filtre à une image
$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.
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
).
Cette fonction retourne TRUE
en cas de
succès ou FALSE
si une erreur survient.
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é.
|
Exemple #1 Exemple avec imagefilter()
<?php
$im = imagecreatefrompng('dave.png');
if($im && imagefilter($im, IMG_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($im, IMG_FILTER_BRIGHTNESS, 20))
{
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($im, IMG_FILTER_COLORIZE, 0, 255, 0))
{
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($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 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) * 2, imagesy($logo1));
// Applique la pixelisation à chaque instance, avec un bloc de 3
imagefilter($logo1, IMG_FILTER_PIXELATE, 3);
imagefilter($logo2, IMG_FILTER_PIXELATE, 3, true);
// Fusion des différences dans l'image finale
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);
// Affichage des différences
header('Content-Type: image/png');
imagepng($output);
imagedestroy($output);
?>
L'exemple ci-dessus va afficher quelque chose de similaire à :