Lors de l'utilisation de la bibliothèque GD pour le traitement d'image, la fonction ImageeNtialias () est un outil très utile. Il peut lisser les bords de l'image dessinée en permettant un anti-aliasing. Mais comme l'effet de cette fonction n'est peut-être pas toujours évident, il est nécessaire de juger s'il prend vraiment effet par la comparaison d'images. Cet article comparera les exemples de code et les résultats de sortie de l'image pour illustrer comment vérifier l'effet réel de ImageeAnialias () .
Imageantalias (Resource $ image, bool $ activé): Bool est une fonction dans la bibliothèque PHP GD pour contrôler si l'anti-aliasing est activé sur les images. Cette fonction joue principalement un rôle dans le dessin de graphiques vectoriels tels que les lignes, les cercles et les ellipses. Lorsqu'ils sont définis sur Vrai , des algorithmes plus complexes sont utilisés pour lisser les bords et rendre l'image plus naturelle; tandis que les bords d'image peuvent avoir des dents de déchaînement évidentes lorsqu'elles sont fermées.
Pour déterminer si la fonction est activée, nous pouvons dessiner la même image deux fois: une fois pour activer l'antialiasage et une fois pour désactiver l'antialiasage. Comparez ensuite les deux images pour voir s'il y a une différence significative dans les bords.
Voici un exemple de script PHP simple qui publie les résultats de l'image avec un antialiasing activé et non activé, respectivement.
<?php
function draw_circle($antialias, $filename) {
$width = 200;
$height = 200;
$image = imagecreatetruecolor($width, $height);
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);
imagefill($image, 0, 0, $white);
// Activer ou désactiver l'anti-alias
imageantialias($image, $antialias);
// Dessiner un cercle
imageellipse($image, $width / 2, $height / 2, 150, 150, $black);
// Enregistrer l'image
imagepng($image, $filename);
imagedestroy($image);
}
// Dessinez des images avec un antialiasing activé et non compatible séparément
draw_circle(false, 'no_antialias.png');
draw_circle(true, 'with_antialias.png');
?>
Après avoir exécuté le script ci-dessus, deux fichiers PNG seront générés:
no_antialias.png : Antialias n'est pas activé
avec_antialiaS.png : Antialias est activé
Comparaison de ces deux images dans le navigateur et vous trouverez:
Les bords d'image avec antialiasing sont significativement déchiquetés;
Les bords d'image activés anti-aliasing sont plus lisses et les lignes sont plus douces.
Par exemple, vous pouvez accéder à l'adresse suivante dans votre navigateur pour afficher l'effet de sortie (en supposant que le script PHP est placé dans le répertoire racine de votre site Web):
https://www.m66.net/no_antialias.png
https://www.m66.net/with_antialias.png
De cette façon, nous pouvons clairement déterminer si ImageeANTIALIAS () prend effet. Il convient de noter que cette fonction ne prend pas effet sur d'autres opérations GD telles que la mise à l'échelle de l'image, et n'est valable que pour le dessin graphique (tels que les lignes, les cercles, etc.).
Problème de version de la bibliothèque GD : différentes versions PHP et les bibliothèques GD ont différents niveaux de prise en charge de l'anti-aliasing. Il est recommandé d'utiliser des versions PHP plus récentes pour de meilleurs résultats.
Limitation du type d'image : l'effet anti-aliasage se reflète principalement dans les opérations de dessin vectorielles. Si l'image est simplement redimensionnée ou copie, ImageeRalias () n'a aucun effet. Il est recommandé d'utiliser ImageCopyResampled () pour obtenir un effet de lissage.
Support d'image transparent : si un arrière-plan transparent est impliqué lors du dessin, un traitement supplémentaire de paramètres liés à ImageAlPhable
En comparant l'effet de sortie de l'image, nous pouvons juger intuitivement si la fonction ImageeRalias () est vraiment activée pour les anti-alias. Construisez simplement la scène de dessin graphique appropriée et activez / désactivez la fonction de comparaison, elle peut être facilement vérifiée. Cette méthode est simple et intuitive, et est un moyen efficace de résoudre les problèmes de qualité de dessin GD.