(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. Version | Description |
---|---|
8.0.0 | image attend une instance de GdImage désormais; auparavant, une resourcegd é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');
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.