imagefilter

(PHP 5, PHP 7, PHP 8)

imagefilterApplique un filtre à une image

Description

imagefilter(GdImage$image, int$filter, array|int|float|bool...$args): bool

imagefilter() applique le filtre donné filter sur l'image.

Liste de paramètres

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

arg2

arg3

arg4

  • IMG_FILTER_COLORIZE canal Alpha, une valeur entre 0 et 127. 0 indique une opacité totale tandis que 127 indique une transparence totale.

Valeurs de retour

Cette fonction retourne true en cas de succès ou false si une erreur survient.

Historique

VersionDescription
8.0.0image 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.

Exemples

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 à :

Sortie de l'exemple de pixellisation avec imagefilter

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 à :

Sortie de l'exemple de dispersion avec imagefilte

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
To Top