(PHP 5, PHP 7, PHP 8)
imagefilter — Applique un filtre à une image
imagefilter() applique le filtre donné
filter
sur l'image
.
image
Un 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 |
image attend une instance de GdImage désormais;
auparavant, une resource gd é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_SCATTER
est toujours aléatoire.