imagefilter
(PHP 5, PHP 7)
imagefilter — Applique un filtre à une image
Description
$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.
Liste de paramètres
-
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. Utilisezargs1
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. Utilisezargs1
pour définir le niveau de contraste. -
IMG_FILTER_COLORIZE
: CommeIMG_FILTER_GRAYSCALE
sauf que vous pouvez spécifier la couleur.args1
,args2
etargs3
sous la formered
,green
,blue
etarg4
pour le canalalpha
. 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). Utilisezargs1
pour définir le degré de lissoir. -
IMG_FILTER_PIXELATE
: Applique un effet de pixelisation à l'image; utilisearg1
pour indiquer la taille de bloc, etarg2
pour indiquer le mode de pixelisation. -
IMG_FILTER_SCATTER
: Applique un effet de dispersion à l'image, utilisezarg1
etarg2
pour définir la force de l'effet et additionellementarg3
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 avecarg2
.
-
-
arg2
-
-
IMG_FILTER_COLORIZE
: Valeur du composant vert. -
IMG_FILTER_PIXELATE
: Utiliser ou non l'effet de pixellisation avancé (valeur par défautFALSE
). -
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.
-
Historique
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é.
|
Exemples
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 à :
Voir aussi
- imageconvolution() - Applique une matrice de la convolution 3x3, en utilisant le coefficient et l'excentrage
Version en cache
22/11/2024 22:23:04 Cette version de la page est en cache (à la date du 22/11/2024 22:23:04) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-imagefilter.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.