Aktueller Standort: Startseite> Neueste Artikel> Bilder werden bei der Verwendung von ImageAntialias () verschwommen? Lösung

Bilder werden bei der Verwendung von ImageAntialias () verschwommen? Lösung

M66 2025-05-26

Bei der Verarbeitung von Bildern in PHP wird die Funktion "ImageAntialias () verwendet, um den Anti-Aliasing-Effekt ein- oder auszuschalten. Anti-Aliasing kann die Linienkanten glätten, gezackte Kanten vermeiden und die Ästhetik des Bildes verbessern. Viele Entwickler werden jedoch feststellen, dass das Bild nach Verwendung von Imagesantialias () verschwommen wird, was nicht einmal so klar ist wie bei der Nicht-Aliasing-Anti-Aliasing. Warum passiert das? Wie löst ich es?

Was ist Imagesantialias ()?

Imagesantialias (Ressource $ image, bool $ aktiviert): bool
Dies ist eine Funktion in der PHP-GD-Bibliothek, in der festgelegt wird, ob Anti-Aliasing in gezogenen Linien aktiviert werden soll. Diese Funktion wirkt hauptsächlich auf Glättung beim Zeichnen von Linien, Rechtecken und Polygonen.

Beispiel:

 <?php
$image = imagecreatetruecolor(200, 200);
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);

imagefilledrectangle($image, 0, 0, 199, 199, $white);
imageantialias($image, true); // Anti-Aliasing einschalten
imageline($image, 10, 10, 190, 190, $black);

header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
?>

Warum werden Bilder verschwommen?

  1. Die Essenz des Anti-Aliasing ist glatte Kanten <br> Anti-Aliasing erreicht einen Glättungseffekt, indem es den Kanten durchscheinende Pixel hinzufügt, die zwischen dem Vordergrund und den Hintergrundfarben liegen, was zu Linien führt, die nicht so scharf aussehen und ein "verschwommenes" Gefühl verleihen.

  2. Bilder mit niedriger Auflösung vergrößern das verschwommene Gefühl <br> In Bildern mit niedriger Auflösung werden anti-aliased transluzente Pixel offensichtlicher sein, insbesondere dünne Linien, die eher unklar erscheinen.

  3. Nur für Linien und Formen gültig, nicht für Bitmap -Bilder
    Imagesantialias () ist nur für gezogene Vektorlinien wirksam und erhöht die Schärfe der Bitmaps wie Fotos im Bild nicht. Im Gegenteil, der Gesamtlook ist aufgrund der Zugabe von durchscheinenden Pixeln etwas verschwommen.

Wie löste ich das Fuzzy -Problem?

1. Verbesserung der Bildauflösung

Anti-Aliasing funktioniert auf hochauflösenden Bildern besser. Sie können in Betracht ziehen, eine größere Leinwand zum Zeichnen zu erstellen und dann die Bildausgabe zu reduzieren.

 <?php
$width = 400;
$height = 400;
$image = imagecreatetruecolor($width, $height);
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);

imagefilledrectangle($image, 0, 0, $width - 1, $height - 1, $white);
imageantialias($image, true);
imageline($image, 20, 20, 380, 380, $black);

$final = imagecreatetruecolor($width / 2, $height / 2);
imagecopyresampled($final, $image, 0, 0, 0, 0, $width / 2, $height / 2, $width, $height);

header('Content-Type: image/png');
imagepng($final);

imagedestroy($image);
imagedestroy($final);
?>

2. Wählen Sie die rechte Linienbreite

Extrem dünne Linien verschwimmen bei Anti-Alias ​​eher und ordnungsgemäß fette Linien können die Kanten klarer machen.

 <?php
imagesetthickness($image, 3); // Stellen Sie die Leitungsbreite auf3
imageline($image, 10, 10, 190, 190, $black);
?>

3. Verwenden Sie eine fortschrittlichere Grafikbibliothek

Die GD-Bibliothek von PHP verfügt über begrenzte Anti-Aliasing-Funktionen. Wenn eine Bildverarbeitung von höherer Qualität erforderlich ist, können Sie in Betracht ziehen, Bibliotheken wie Imagemagick zu verwenden, um fortgeschrittenere Anti-Aliasing- und Bildverarbeitungsfunktionen zu unterstützen.

4. Vermeiden Sie die Verwendung von Anti-Aliasing direkt auf der Bitmap

Anti-Aliasing ist nur zum Zeichnen von Operationen wirksam und für verwischende Probleme mit vorhandenen Bitmap-Bildern ungültig. Versuchen Sie bei der Verarbeitung von Fotos zu vermeiden, dass die Verwendung von Imagesantialias () verwendet wird.