In PHP kann die ImagePolygon () -Funktion uns helfen, Polygone beim Zeichnen von Diagrammen mit der GD -Bibliothek zu zeichnen. Um die Grafik reibungsloser und schöner zu machen, bietet die GD-Bibliothek die fileantialias () -Funktion, um Anti-Aliasing zu aktivieren oder zu deaktivieren. In diesem Artikel wird der Unterschied in der Wirkung des Zeichnens von Polygonen mithilfe von ImagePolygon () vor und nach dem Aufrufen der Funktion "ImageAntialias () () erörtert und diese visuell durch Codebeispiele angezeigt.
Imagesantialias () ist eine Funktion in der GD-Bibliothek, um die Anti-Aliasing von Bildern zu aktivieren oder auszuschalten. Antialiasing ist eine Technik zum Glätten von Kanten in der Bildverarbeitung. Durch das Mischen von Kantenfarben sehen die Kanten weniger "gezackt" und verbessern die Qualität der Grafiken.
Der Funktionsprototyp lautet wie folgt:
bool imageantialias(resource $image, bool $enabled);
$ Bild : Bildressource.
$ aktiviert : Booleaner Wert, True ermöglicht Anti-Aliasing, falsche Deaktivierungen.
ImagePolygon () wird verwendet, um ein aus mehreren Punkten bestehender Polygon zu zeichnen, und die Funktionssignatur lautet wie folgt:
bool imagepolygon(resource $image, array $points, int $num_points, int $color);
$ Punkte : Eine Reihe von Punktkoordinaten, die in [x1, y1, x2, y2, ..., xn, yn] formatiert sind.
$ num_points : Die Anzahl der Punkte.
$ Farbe : Farbressource.
Standardmäßig sind die Kanten der von GD gezogenen Polygonen nicht gegen Aliasing an, und die Kanten erscheinen "gezackter", insbesondere wenn die Polygonkanten größer sind. Nach dem Aufrufen von Imagesantialias ($ image, true) sind die gezogenen Kanten reibungsloser und haben einen besseren visuellen Effekt.
Das Folgende ist ein Beispiel, um den Unterschied beim Zeichnen von Polygonen vor und nach dem Aufrufen von Imagesantialias () zu zeigen:
<?php
header('Content-Type: image/png');
// Erstellen Sie eine Leinwand
$width = 200;
$height = 200;
$image = imagecreatetruecolor($width, $height);
// Farben zuweisen
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);
$red = imagecolorallocate($image, 255, 0, 0);
// Füllen Sie den Hintergrund
imagefill($image, 0, 0, $white);
// Polygonscheitelpunkte
$points = [50, 30, 150, 30, 180, 100, 100, 170, 20, 100];
// Anti-Aliasing ausschalten,Polygone zeichnen
imageantialias($image, false);
imagepolygon($image, $points, count($points)/2, $black);
// Bürstenpositionsversatz,Zeichnen Sie das zweite Polygon
// Anti-Aliasing ermöglichen,Polygone zeichnen
imageantialias($image, true);
$points2 = [70, 50, 170, 50, 200, 120, 120, 190, 40, 120];
imagepolygon($image, $points2, count($points2)/2, $red);
// Bilder ausgeben und Ressourcen veröffentlichen
imagepng($image);
imagedestroy($image);
?>
Polygone ohne Anti-Aliasing (schwarz) : Die Kanten sind offensichtlich gezackt, insbesondere die Schrägstriche sind rau.
Anti-Aliasing-Polygone (rot) : glatte Kanten und weichere visuelle Effekte, insbesondere in den abgeschrägten Teilen der Anti-Aliasing-Wirkung.
Nicht alle Umgebungen unterstützen Anti-Aliasing, und einige Serverumgebungen oder GD-Versionen sind möglicherweise nicht vollständig effektiv.
Anti-Aliasing erhöht die Menge an Berechnungen beim Zeichnen, und komplexe Grafiken können die Leistung leicht beeinflussen.
Imagesantialias () gilt nur für bestimmte Zeichenfunktionen, wie z. B. Imagine () , ImagePolygon () usw.
Das Aufrufen der Funktion von Imagesantialias () kann die Glätte von ImagePolygon () Zeichnungskanten erheblich verbessern und die Figur schöner machen. Für Szenarien, in denen qualitativ hochwertige Grafiken benötigt werden, wird empfohlen, Anti-Aliasing zu ermöglichen. Es muss jedoch auf der Grundlage der tatsächlichen Leistungsanforderungen und der Kompatibilität erstellt werden.