Lorsque vous utilisez la bibliothèque GD de PHP pour le traitement d'image, la fonction ImageeANtiAnias () est souvent utilisée pour activer ou désactiver l'anti-aliasing pour rendre les lignes dessinées plus lisses. De nombreux développeurs se demanderont si cette fonction doit être appelée à nouveau chaque fois qu'ils dessinent une image? Ou existe-t-il les meilleures pratiques pour éviter les appels en double pour améliorer les performances?
La fonction ImageeANtialias () agit sur les ressources d'image GD et permet l'anti-aliasing. Lorsque vous appelez:
imageantialias($image, true);
Il définit le drapeau anti-aliasing de la ressource d'image sur ON, puis toutes les opérations de dessin basées sur la ressource essaieront d'utiliser la technologie anti-aliasing.
La réponse est non. Imageantalias () est un paramètre de propriété pour une ressource d'image. Une fois qu'Antialias est activé pour la ressource, le paramètre sera appliqué au dessin ultérieur de cette ressource d'image jusqu'à ce que la ressource soit détruite ou que vous la désactivez explicitement ( Imageanttialias ($ image, false) ).
Cela signifie:
Dans la même ressource d'image, il vous suffit d'appeler ImageeAralias () .
Je n'ai pas à l'appeler avant chaque dessin.
Par exemple:
<?php
$image = imagecreatetruecolor(200, 200);
imageantialias($image, true); // Activer l'anti-aliasing
// Tracer les lignes plusieurs fois
imageline($image, 10, 10, 190, 10, imagecolorallocate($image, 255, 0, 0));
imageline($image, 10, 20, 190, 20, imagecolorallocate($image, 0, 255, 0));
// Pas besoin de répéter les appels imageantialias()
header("Content-Type: image/png");
imagepng($image);
imagedestroy($image);
?>
Du point de vue des performances, les frais généraux de l'appel à ImageeANtialias () lui-même sont extrêmement petits, mais les appels répétés ne sont pas nécessaires pour apporter des déchets de performances faibles, en particulier dans des boucles de dessin complexes ou des images générateurs de lots.
Meilleures pratiques:
Après avoir initialisé la ressource d'image, ImageeANtialias ($ image, true);
Les opérations de dessin ultérieures sont basées sur le même paramètre, et aucun appel répété n'est requis
S'il y a plusieurs images indépendantes, les états anti-aliasing respectifs peuvent être initialisés séparément
Évitez d'appeler à l'intérieur d'une boucle ou avant de dessiner chaque ligne pour réduire le nombre d'appels de fonction
En résumé, ImageeANtiAnias () est une fonction pour définir l'état de la ressource d'image. Après activé, l'anti-aliasing est appliqué à l'image entière. Pas besoin d'appeler chaque tirage, éviter les appels répétés peut légèrement améliorer les performances et le code de la clarté.