Bei der Verarbeitung von Bildern in PHP wird die Funktion der Bildungstialias () häufig verwendet, um den Kanteneffekt von Zeichnen von Linien und Grafiken zu verbessern, wodurch sie reibungsloser und natürlicher wird. Viele Entwickler werden sich darum kümmern, ob es besser ist, vor Skalieren oder nach der Skalierung die Funktion der Bildung () () aufzurufen? In diesem Artikel wird dieses Problem im Detail erörtert und Code -Beispiele verwendet, um die spezifischen Auswirkungen der Funktion der Bildqualität vor und nach der Skalierung zu veranschaulichen.
Imagesantialias () ist eine Funktion in der PHP -GD -Bibliothek, um Antialiasing -Effekte zu aktivieren oder zu deaktivieren. Anti-Aliasing ist eine Bildverarbeitungstechnologie, mit der die gezackte Form der Kanten des Diagramms verringert und die Kanten reibungsloser werden.
bool imageantialias(resource $image, bool $enabled);
$ Bild : Bildressourcenhandle.
$ aktiviert : auf treu gesetzt, um Anti-Aliasing zu ermöglichen, falsch ausgeschaltet.
Es ist zu beachten, dass Bildantialias () für alle gezogenen Linien und Formen wirksam ist, aber den Bildskalierungsalgorithmus nicht direkt beeinflusst.
Bei der Skalierung eines Bildes sind die üblichen Schritte:
Schalten Sie zuerst Anti-Aliasing ein und zoomen Sie dann auf das Bild.
Skalieren Sie zuerst das Bild und schalten Sie dann Anti-Aliasing ein.
Diese beiden Methoden werden Unterschiede in den tatsächlichen Ergebnissen aufweisen.
<?php
// Erstellen Sie Originalbild
$src = imagecreatefromjpeg('http://m66.net/images/sample.jpg');
// Erstellen Sie ein Ziel -Zoom -Bild
$dst = imagecreatetruecolor(200, 150);
// Anti-Aliasing ermöglichen
imageantialias($dst, true);
// Zoomkopie durchführen
imagecopyresampled($dst, $src, 0, 0, 0, 0, 200, 150, imagesx($src), imagesy($src));
// Ausgabe Bild
header('Content-Type: image/jpeg');
imagejpeg($dst);
// Ressourcen frei machen
imagedestroy($src);
imagedestroy($dst);
?>
<?php
// Erstellen Sie Originalbild
$src = imagecreatefromjpeg('http://m66.net/images/sample.jpg');
// Erstellen Sie ein Ziel -Zoom -Bild
$dst = imagecreatetruecolor(200, 150);
// Zoomkopie durchführen
imagecopyresampled($dst, $src, 0, 0, 0, 0, 200, 150, imagesx($src), imagesy($src));
// Anti-Aliasing ermöglichen
imageantialias($dst, true);
// Ausgabe Bild
header('Content-Type: image/jpeg');
imagejpeg($dst);
// Ressourcen frei machen
imagedestroy($src);
imagedestroy($dst);
?>
Schalten Sie Anti-Aliasing vor, bevor Sie <br> zoomen Diese Einstellung wirkt sich hauptsächlich auf die nachfolgenden grafischen Zeichnungsvorgänge aus, z. B. Zeichnen von Linien, Rechtecken, Kreisen usw. Es optimiert die Qualität der Bildskalierung nicht direkt, da imageCopyresampled () selbst bereits auf dem neu Sampling-Anti-Aliasing-Algorithmus basiert.
Wenn Sie nach der Skalierung glatte Grafiken zeichnen müssen, können Sie Anti-Aliasing im Voraus einschalten.
Anti-Aliasing nach dem Zoomen <br> einschalten Es gibt keine signifikante Verbesserung der Qualität der reinen Bildskalierung. Da Anti-Aliasing nur die Verarbeitung der Linien durch die Zeichnungsfunktion beeinflusst, aber keinen direkten Einfluss auf die Pixelskalierung des gesamten Bildes hat.
Zusammenfassend hat ImageAntialias () keinen direkten Einfluss auf die Skalierungsoperation selbst und wirkt hauptsächlich auf nachfolgende Zeichnungsaktionen. Wenn Sie die Qualität des skalierten Bildes verbessern müssen, sollten Sie hochwertige Skalierungsfunktionen wie imageCopyresampled () verwenden, anstatt sich auf Bildantialias () zu verlassen.
Wenn Sie nach dem Zoomen noch Vektorgrafiken (Linien, Grenzen) zeichnen müssen, ist es angemessener, sich imagesantialias () zu ermöglichen.
Wenn Sie nur skalieren, müssen Sie nur imageCopyresampled () verwenden, und das Einschalten von Imagesantialias () ist auf Qualitätsverbesserung beschränkt.