(PHP 5, PHP 7)
imagefilter — Applique un filtre à une image
$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.
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.
Cette fonction retourne TRUE
en cas de succès ou FALSE
si une erreur survient.
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é.
|
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 à :
Exemple #6 Exemple de dispersion imagefilter()
<?php
// Charger l'image
$logo = imagecreatefrompng('./php.png');
// Applique une dispersion très douce à l'image
imagefilter($logo, IMG_FILTER_SCATTER, 3, 5);
// 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 à :
Note: Le résultat de
IMG_FILTER_SCATTER
est toujours aléatoire.