Bei der Verwendung der GD -Bibliothek für die Bildverarbeitung ist die Funktion "ImageAntialias ()) ein sehr nützliches Werkzeug. Es kann die Kanten des gezogenen Bildes durch Aktivieren von Anti-Aliasings glätten. Da die Auswirkung dieser Funktion jedoch möglicherweise nicht immer offensichtlich ist, ist es notwendig zu beurteilen, ob sie durch Bildvergleich wirklich wirksam wird. In diesem Artikel werden die Code -Beispiele und die Bildausgabeergebnisse verglichen, um zu veranschaulichen, wie die tatsächliche Wirkung von Imagesantialias () überprüft wird.
Imagesantialias (Ressource $ Image, bool $ aktiviert): Bool ist eine Funktion in der PHP-GD-Bibliothek, um zu steuern, ob Anti-Aliasing auf Bildern aktiviert ist. Diese Funktion spielt hauptsächlich eine Rolle beim Zeichnen von Vektorgrafiken wie Linien, Kreisen und Ellipsen. Wenn sie auf True gesetzt sind, werden komplexere Algorithmen verwendet, um die Kanten zu glätten und das Bild natürlicher zu gestalten. Während die Bildkanten im Abschluss offensichtlicher gezackter Zähne aufweisen können.
Um festzustellen, ob die Funktion aktiviert ist, können wir dasselbe Bild zweimal zeichnen: einmal, um Antialiasing zu ermöglichen und einmal die Antialiasing zu deaktivieren. Vergleichen Sie dann die beiden Bilder, um festzustellen, ob es einen signifikanten Unterschied in den Kanten gibt.
Hier ist ein einfaches Beispiel für PHP -Skript, das Bildergebnisse mit aktivierter bzw. nicht fähiger Antialiasing ausgibt.
<?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);
// Anti-Aliasing ein- oder ausschalten
imageantialias($image, $antialias);
// Zeichne einen Kreis
imageellipse($image, $width / 2, $height / 2, 150, 150, $black);
// Speichern Sie das Bild
imagepng($image, $filename);
imagedestroy($image);
}
// Zeichnen Sie Bilder mit aktivierter antialiasing und unanfertigt separat
draw_circle(false, 'no_antialias.png');
draw_circle(true, 'with_antialias.png');
?>
Nach dem Ausführen des obigen Skripts werden zwei PNG -Dateien generiert:
no_antialias.png : Antialias sind nicht aktiviert
With_antialias.png : Antialias sind aktiviert
Vergleich dieser beiden Bilder im Browser und Sie werden finden:
Bildkanten mit Antialiasing sind signifikant gezackt;
Anti-Aliasing-aktivierte Bildkanten sind reibungsloser und die Linien weicher.
Sie können beispielsweise auf die folgende Adresse in Ihrem Browser zugreifen, um den Ausgangseffekt anzuzeigen (vorausgesetzt, das PHP -Skript befindet sich im Stammverzeichnis Ihrer Website):
https://www.m66.net/no_antialias.png
https://www.m66.net/with_antialias.png
Auf diese Weise können wir deutlich bestimmen, ob Bildantialias () wirksam werden. Es ist zu beachten, dass diese Funktion nicht auf andere GD -Operationen wie Bildskalierung wirkt und nur für grafische Zeichnen (z. B. Linien, Kreise usw.) gültig ist.
GD-Bibliotheksversionsproblem : Verschiedene PHP-Versionen und GD-Bibliotheken haben unterschiedliche Unterstützung für Anti-Aliasing. Es wird empfohlen, neuere PHP -Versionen für bessere Ergebnisse zu verwenden.
Einschränkung des Bildtyps : Der Anti-Aliasing-Effekt spiegelt sich hauptsächlich in den Vektorzeichnungsvorgängen wider. Wenn das Bild nur die Größe oder Kopie verändert wird, hat ImageAntialias () keine Wirkung. Es wird empfohlen, imageCopyresampled () zu verwenden, um Glättungseffekte zu erhalten.
Transparente Bildunterstützung : Wenn während der Zeichnung ein transparenter Hintergrund beteiligt ist, sind zusätzliche Verarbeitung von Bildungsabweichungen () und imagesavealpha () verbundene Einstellungen erforderlich.
Durch den Vergleich des Image-Output-Effekts können wir intuitiv beurteilen, ob die Funktion der ImageAntialias () für Anti-Alias wirklich aktiviert ist. Erstellen Sie einfach die entsprechende grafische Zeichnenszene und aktivieren/deaktivieren Sie die Funktion zum Vergleich. Sie kann leicht überprüft werden. Diese Methode ist einfach und intuitiv und ein effektives Mittel, um GD -Qualitätsprobleme zu beheben.